Submission
Status:
(PPPP-SSSSSSSS)(-SSSSSS)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{0/30}{0/40}
Score: 0
User: Gump2011
Problemset: Red Zone
Language: cpp
Time: 0.013 second
Submitted On: 2026-03-08 22:42:52
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(0), cin.tie(0);
ll n, m, l, d;
cin >> n >> m >> l >> d;
vector<ll> 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];
}
vector<ll> need(n+1);
for(int i=1;i<=n;i++){
need[i] = (a[i] + d - 1) / d;
}
auto ok = [&](int k){
vector<ll> diff(n+2,0);
for(int j=1;j<=k;j++){
int l = max(1, b[j]-l);
int r = min((ll)n, (ll)b[j]+l);
diff[l]++;
diff[r+1]--;
}
ll cur=0;
for(int i=1;i<=n;i++){
cur += diff[i];
if(cur < need[i]){
return false;
}
}
return true;
};
int L = 1,r = m,ans = -1;
while(L <= r){
int mid=(L+r)/2;
if(ok(mid)){
ans=mid;
r=mid-1;
}else{
L=mid+1;
}
}
cout << ans;
}