Submission
Status:
(PPPPPPPPPPPPP)(PPPPPPP)(PPPPPPPPP)
Subtask/Task Score:
{30/30}{30/30}{40/40}
Score: 100
User: kavin8888
Problemset: Red Zone
Language: cpp
Time: 0.019 second
Submitted On: 2025-11-07 21:46:17
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define vll vector<long long int>
#define ll long long
int chouse,cbomb,rbomb;
ll dbomb;
vi house;
vll bomb;
bool chk(int x) {
static vector<int> res;
res.assign(chouse+3,0);
for(int i=0;i<x;i++) {
int pos=bomb[i];
int l=max(1,pos-rbomb);
int r=min(chouse,pos+rbomb);
res[l]++;
res[r+1]--;
}
ll vip=0;
for(int i=1;i<=chouse;i++) {
vip+=res[i];
ll vep=(house[i-1]+dbomb-1)/dbomb;
if(vip<vep) return false;
}
return true;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>chouse>>cbomb>>rbomb>>dbomb;
for(int i=0;i<chouse;i++) {
int a;
cin>>a;
house.push_back(a);
}
for(int i=0;i<cbomb;i++) {
int b;
cin>>b;
bomb.push_back(b);
}
int l=1,r=cbomb,ans=-1;
while(l<=r) {
int mid=(l+r)/2;
if(chk(mid)) {
ans=mid;
r=mid-1;
}
else {
l=mid+1;
}
}
cout<<ans<<'\n';
return 0;
}