Submission

Status:

(-SSSSSSSSSSSS)(-SSSSSS)(SSSSSSSSS)

Subtask/Task Score:

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

Score: 0

User: KantaponZ

Problemset: Red Zone

Language: cpp

Time: 0.019 second

Submitted On: 2025-08-12 19:10:36

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

int N, M, L, D;
int A[100005], B[100005];

int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    cin >> N >> M >> L >> D;
    for (int i = 1; i <= N; i++) cin >> A[i];
    for (int i = 1; i <= M; i++) cin >> B[i];
    int l = 1, r = M;
    int ans = INT_MAX;
    while (l <= r) {
        int mid = (l + r) / 2;
        int s[N + 5];
        memset(s, 0, sizeof s);
        for (int i = 1; i <= mid; i++) {
            s[max(B[i] - L, 1)] += D;
            s[min(B[i] + L, N) + 1] -= D;
        }
        bool pass = true;
        int sum = 0;
        for (int i = 1; i <= N; i++) {
            sum += s[i];
            if (sum < A[i]) {
                pass = 0;
                break;
            }
        }
        if (pass) {
            r = mid - 1;
            ans = min(ans, mid);
            cout << 0;
        } else {
            l = mid + 1;
        }
    }
    if (ans == INT_MAX) {
        cout << -1;
    } else cout << ans;
}

/*
10 3 7 1
2 5 4 3 7 8 9 1 6 9
4
5
6
*/