Submission
Status:
(PPPPPPPPPPPPP)(PPPPPPP)(PPPPPPPPP)
Subtask/Task Score:
{30/30}{30/30}{40/40}
Score: 100
User: Kitsunox
Problemset: Red Zone
Language: cpp
Time: 0.046 second
Submitted On: 2025-12-22 17:44:34
#include <bits/stdc++.h>
using namespace std;
const int nx = 1e5+5;
int n,m,l,d;
int ho[nx],bo[nx];
bool check(int md){
vector<int>mp (n+5,0);
int damage = 0;
for(int i = 1;i <= md;i++){
int ll = max(1,bo[i]-l);
int rr = min(n+1,bo[i]+l+1);
mp[ll] += d;
mp[rr] -= d;
}
for(int i = 1;i <= n;i++){
damage += mp[i];
if(ho[i] - damage > 0)return 0;
}
return 1;
}
int main(){
cin >> n >> m >> l >> d;
for(int i = 1;i <=n;i++)cin >> ho[i];
for(int i = 1;i <=m;i++)cin >> bo[i];
int lo = 1,hi = m+1;
while(lo < hi){
int md = (lo+hi)/2;
if(check(md)) hi = md;
else lo = md+1;
}
if(lo == m+1)cout <<"-1";
else cout << lo;
}