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:43:02

#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;
}