Submission
Status:
(PxSSSSSSSSSSS)(PPPPPPx)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{0/30}{0/40}
Score: 0
User: Kitsunox
Problemset: Red Zone
Language: cpp
Time: 0.036 second
Submitted On: 2025-12-22 08:20:18
#include <bits/stdc++.h>
using namespace std;
const int nx = 1e5+5;
int n,m,d,l;
int ho[nx],bo[nx];
bool check(int md){
vector<int> mp(m+5,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;
}
int damage = 0;
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,r = m + 1;
while(lo < r){
int md = (lo+r)/2;
if(check(md)) r = md;
else lo = md + 1;
}
if(lo == m+1)cout << "-1";
else cout << lo;
}