Submission
Status:
(PPP-SSSSSSSSS)(-SSSSSS)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{0/30}{0/40}
Score: 0
User: august
Problemset: Red Zone
Language: cpp
Time: 0.013 second
Submitted On: 2025-12-07 10:50:24
#include <bits/stdc++.h>
using namespace std;
int n,m,L,d;
bool check(int mid, vector<int>&b, vector<int>&a) {
vector<int> s(n+1);
for (int i=1; i<=mid; i++) {
s[max(1,b[i]-L)] = -d;
if (b[i]+L+1 <= n) s[b[i]+L+1] = d;
}
for (int i=2; i<=n; i++) {
s[i] += s[i-1];
}
for (int i=1; i<=n; i++) {
if (s[i] + a[i] > 0) return false;
}
return true;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin>> n>> m>> L>> d;
vector<int> a(n+1);
for (int i=1; i<=n; i++) cin>> a[i];
vector<int> b(m+1);
for (int i=1; i<=m; i++) cin>> b[i];
int l=1, r=m;
while (l <= r) {
int mid=(l+r)/2;
if (check(mid, b, a)) r=mid-1;
else l=mid+1;
}
cout<< (l>m ? -1 : l);
}