Submission
Status:
(PPPPPPPPPPPPP)(PPPPPPP)(PPPPPPPPP)
Subtask/Task Score:
{30/30}{30/30}{40/40}
Score: 100
User: mydKN
Problemset: Red Zone
Language: cpp
Time: 0.024 second
Submitted On: 2026-03-19 22:52:28
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
#define F first
#define S second
const int maxn = 1e5 + 5;
int n, m, l, d;
int arr[maxn];
pii bomb[maxn];
int lo, hi, res = -1;
int del[maxn];
bool ok(int mid){
memset(del, 0, sizeof(del));
for(int i=1;i<=mid;++i){
del[bomb[i].F] += d;
del[bomb[i].S] -= d;
}
for(int i=1;i<=n;++i){
del[i] += del[i-1];
if(del[i] < arr[i]){
return 0;
}
}
return 1;
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> n >> m >> l >> d;
for(int i=1;i<=n;++i){
cin >> arr[i];
}
for(int i=1;i<=m;++i){
int x;
cin >> x;
bomb[i].F = max(1, x - l);
bomb[i].S = min(n, x + l) + 1;
}
lo = 1, hi = m;
while(lo <= hi){
int mid = lo + (hi - lo) / 2;
if(ok(mid)){
res = mid;
hi = mid - 1;
}
else lo = mid + 1;
}
cout << res;
}