Submission
Status:
(PPP-SSSSSSSSS)(PPPPPPP)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{30/30}{0/40}
Score: 30
User: C12
Problemset: Red Zone
Language: cpp
Time: 0.013 second
Submitted On: 2026-01-21 23:14:43
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
int32_t mod = 1e9+7;
ll n,m,l,d;
ll a[100001],b[100001];
bool bi(int k){
ll dmg[n] = {0};
for(int i = 0;i <= k;i++){
dmg[max(0LL,b[i]-l)] += d;
dmg[min(n,b[i]+l+1)] -= d;
}
ll damage = 0;
for(int i = 0;i < n;i++){
damage += dmg[i];
// cout << damage << ' ';
if(damage < a[i]){
// cout << '\n';
return 0;
}
}
// cout << '\n';
return 1;
}
void solve(){
cin >> n >> m >> l >> d;
for(int i = 0;i < n;i++){
cin >> a[i];
}
for(int i = 0;i < m;i++){
cin >> b[i];
}
ll low = 0;
ll high = m-1;
ll mid;
// cout << '\n';
while(low < high){
mid = (low + high)/2;
if(bi(mid)){
high = mid;
}
else{
low = mid + 1;
}
// cout << mid << '\n';
}
if(low + 1 == m && !bi(n-1)){
cout << -1;
return;
}
cout << (low + 1);
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}