Submission

Status:

(-SSSSSSSSSSSS)(-SSSSSS)(SSSSSSSSS)

Subtask/Task Score:

{0/30}{0/30}{0/40}

Score: 0

User: havename

Problemset: Red Zone

Language: cpp

Time: 0.031 second

Submitted On: 2026-03-05 17:10:54

#include<bits/stdc++.h>
#define ll long long
const ll nx = 1e5+15;
using namespace std;
ll n,m,l,d;
ll bo[nx],ho[nx];

int solve(int md){
    vector<ll> pr(nx,0); 
    ll damage = 0;
    for(int i = 1;i <=md;i++){
        ll left  =max((ll)1,bo[i]-l);
        ll right  =min(n+2,bo[i]+1+l);
        pr[left] += d;
        pr[right] -= d;
    }
    for(int i = 1;i <= n;i++){
        damage += pr[i];
        if(ho[i]-damage >= 0){
            return 0;
        } 
    }
    cout << '\n';
    return 1;
}

int main(){
    cin>>n>>m>>l>>d;
    for(int i = 1;i <= n;i++)cin >> ho[i];
    for(int i = 1;i <= m;i++)cin >> bo[i];
    int lo = 0,hi = m+10;
    while(lo < hi){
        int md = (lo+hi)/2;
        if(solve(md)) hi = md ;
        else lo = md + 1;
    }
    if(lo == m+10)cout << "-1";
    else cout << lo;
}