Submission

Status:

(PPPPPPPPPPPPP)(PPPPPPP)(PPPPPPPPP)

Subtask/Task Score:

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

Score: 100

User: Kitsunox

Problemset: Red Zone

Language: cpp

Time: 0.041 second

Submitted On: 2025-12-22 17:19:33

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

bool check(int md){
    vector<int>mp(n+10,0);
    for(int i = 1;i<= md;i++){
        int ll = max(1,bo[i]-l);
        int rr = min(n+1,bo[i]+l+1);
        mp[ll] += d;
        mp[rr] -= d;
    }
    int damage = 0;
    for(int i = 1;i<=n;i++){
        damage += mp[i];
        if(ho[i]- damage > 0)return 0;
    }
    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 = 1,hi = m+1;
    while(lo < hi){
        int md = (lo+hi)/2;
        if(check(md))hi = md;
        else lo = md + 1;
    }
    if(lo == m+1)cout << "-1";
    else cout << lo;
    
}