Submission

Status:

(PPPPPPPPPPPPP)(PPPTSSS)(SSSSSSSSS)

Subtask/Task Score:

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

Score: 30

User: Trees

Problemset: Red Zone

Language: cpp

Time: 1.093 second

Submitted On: 2026-03-06 09:04:11

#include<bits/stdc++.h>
using namespace std;

int n,m,L,d;
vector<int> a;
vector<int> b;
vector<int> c;

bool check(int total,int now)
{
    int bmin = max(1,total-L);
    int bmax = min(n+1,total+L+1);

    c[bmin] += d;
    c[bmax] -= d;

    int curr = 0;

    for(int i=1;i<=n;++i){
        curr += c[i];

        if(curr < a[i])
        return false;
    }
    return true;
}

int main()
{
    cin >> n >> m >> L >> d;

    a.assign(n+2,0);
    b.resize(m+1);
    c.assign(n+2,0);

    for(int i=1;i<=n;++i)
    cin >> a[i];

    for(int i=1;i<=m;++i)
    cin >> b[i];

    for(int i=1;i<=m;++i){

        if(check(b[i],i)){
            cout << i;
            return 0;
        }

    }

    cout << -1;
    return 0;
}