Submission
Status:
(PPP-SSSSSSSSS)(PPPPPPP)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{30/30}{0/40}
Score: 30
User: navysrimuang
Problemset: Red Zone
Language: cpp
Time: 0.014 second
Submitted On: 2026-03-19 22:13:21
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int n,m,l,d;
ll hs[100002];
int b[100002];
bool chk(int k){
vector<ll> diff(n+2,0);
for(int i = 1;i<=k;i++){
int L = max(1,b[i] - l);
int R = min(n,b[i] + l);
diff[L] += 1;
diff[R+1] -= 1;
}
ll cur = 0;
for(int i = 1;i<=n;i++){
cur += diff[i];
if(cur*d < hs[i]) return 0;
}
return 1;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cin >> n >> m >> l >> d;
for(int i = 1;i<=n;i++) cin >> hs[i];
for(int i = 1;i<=m;i++) cin >> b[i];
int lo = 1, hi = n;
int ans = -1;
while(lo <= hi){
int mid = (lo+hi)/2;
if(chk(mid)){
ans = mid;
hi = mid-1;
}else{
lo = mid+1;
}
}
cout << ans << "\n";
return 0;
}