Submission
Status:
(PP-SSSSSSSSSS)(xSSSSSS)(SSSSSSSSS)
Subtask/Task Score:
{0/30}{0/30}{0/40}
Score: 0
User: mantaggez
Problemset: Red Zone
Language: cpp
Time: 0.012 second
Submitted On: 2025-12-07 09:53:26
#include <bits/stdc++.h>
using namespace std;
const int nx = 1e5+5;
int n, m, l, d;
vector<int> house(nx), bomb(nx);
bool check(int mid, vector<int> qs)
{
vector<int> sl(nx, 0);
bool valid = true;
for(int i=1;i<=mid;i++)
{
sl[max(bomb[i] - l, 1)] -= d;
sl[bomb[i] + l + 1] += d;
}
for(int i=1;i<=n;i++)
{
qs[i] = qs[i - 1] + sl[i];
if(house[i] + qs[i] > 0) valid = false;
}
return valid;
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin >> n >> m >> l >> d;
for(int i=1;i<=n;i++) cin >> house[i];
for(int i=1;i<=m;i++) cin >> bomb[i];
int L = 1, R = m + 1;
while(L < R)
{
int mid = (L + R) / 2;
bool ok = check(mid, house);
if(ok) R = mid;
else L = mid + 1;
}
cout << (L < m ? L : -1);
return 0;
}