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
*/