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.053 second
Submitted On: 2025-12-22 08:23:08
#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(n+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;
}