Submission

Status:

(-SSSSSSSSSSSS)(-SSSSSS)(SSSSSSSSS)

Subtask/Task Score:

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

Score: 0

User: mantaggez

Problemset: Red Zone

Language: cpp

Time: 0.024 second

Submitted On: 2025-12-07 10:54:21

#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int nx = 1e5+5;

int n, m, l, d;
vector<int> house(nx), bomb(nx);

bool check(int mid)
{
	vector<ll> sl(nx, 0), qs(nx, 0);
//	bool valid = true;
	for(int i=1;i<=mid;i++)
	{
		sl[max(bomb[i] - l, 1)] -= d;
		sl[min(bomb[i] + l + 1, n)] += d;
	}
	for(int i=1;i<=n;i++)
	{
		qs[i] = qs[i - 1] + sl[i];
		if(house[i] + qs[i] > 0) return false;
	}
	
	return true;
}

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;
	
	while(L < R)
	{
		int mid = (L + R) / 2;
		bool ok = check(mid);
		if(ok) R = mid;
		else L = mid + 1;
	}
	
	cout << (L == m && !check(m) ? -1 : L);
	
	return 0;
}