Submission
Status:
(PP-SSSSSSSSSS)(PPPPPPP)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{30/30}{0/40}
Score: 30
User: C12
Problemset: Red Zone
Language: cpp
Time: 0.014 second
Submitted On: 2026-01-21 23:31:29
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
int32_t mod = 1e9+7;
ll n,m,l,d;
ll a[100001],b[100001];
bool bi(int k){
ll dmg[n] = {0};
for(int i = 0;i < k;i++){
dmg[max(0LL,b[i]-l)] += d;
dmg[min(n,b[i]+l+1)] -= d;
}
ll damage = 0;
for(int i = 0;i < n;i++){
damage += dmg[i];
// cout << damage << ' ';
if(damage < a[i]){
// cout << '\n';
return 0;
}
}
// cout << '\n';
return 1;
}
void solve(){
cin >> n >> m >> l >> d;
for(int i = 0;i < n;i++){
cin >> a[i];
}
for(int i = 0;i < m;i++){
cin >> b[i];
}
ll low = 1;
ll high = m;
ll mid;
// cout << '\n';
while(low < high){
mid = (low + high)/2;
if(bi(mid)){
high = mid;
}
else{
low = mid + 1;
}
// cout << mid << '\n';
}
if(low == m && !bi(n-1)){
cout << -1;
return;
}
cout << low;
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
5 3 1 5
3 3 3 3 3
3
3
3
*/