Submission
Status:
(PPPPPPPPPPPPP)(PPPPPPP)(PPPPPPPPP)
Subtask/Task Score:
{30/30}{30/30}{40/40}
Score: 100
User: tHeNyXs
Problemset: Red Zone
Language: cpp
Time: 0.017 second
Submitted On: 2026-03-06 08:12:32
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,m,l,d;
cin >> n >> m >> l >> d;
vector<long long> a(n+1);
for(int i=1;i<=n;i++) cin >> a[i];
vector<int> pos(m+1);
for(int i=1;i<=m;i++) cin >> pos[i];
auto check = [&](int k){
vector<long long> diff(n+2,0);
for(int i=1;i<=k;i++){
int L = max(1,pos[i]-l);
int R = min(n,pos[i]+l);
diff[L] -= d;
diff[R+1] += d;
}
long long cur = 0;
for(int i=1;i<=n;i++){
cur += diff[i];
if(a[i] + cur > 0) return false;
}
return true;
};
int L=1,R=m,ans=-1;
while(L<=R){
int mid=(L+R)/2;
if(check(mid)){
ans=mid;
R=mid-1;
}
else{
L=mid+1;
}
}
cout<<ans;
}