Submission
Status:
(-SSSSSSSSSSSS)(-SSSSSS)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{0/30}{0/40}
Score: 0
User: havename
Problemset: Red Zone
Language: cpp
Time: 0.031 second
Submitted On: 2026-03-05 17:10:54
#include<bits/stdc++.h>
#define ll long long
const ll nx = 1e5+15;
using namespace std;
ll n,m,l,d;
ll bo[nx],ho[nx];
int solve(int md){
vector<ll> pr(nx,0);
ll damage = 0;
for(int i = 1;i <=md;i++){
ll left =max((ll)1,bo[i]-l);
ll right =min(n+2,bo[i]+1+l);
pr[left] += d;
pr[right] -= d;
}
for(int i = 1;i <= n;i++){
damage += pr[i];
if(ho[i]-damage >= 0){
return 0;
}
}
cout << '\n';
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 = 0,hi = m+10;
while(lo < hi){
int md = (lo+hi)/2;
if(solve(md)) hi = md ;
else lo = md + 1;
}
if(lo == m+10)cout << "-1";
else cout << lo;
}