91342024-02-15 18:27:15111A Barbárcpp17Futási hiba 0/100904ms380344 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
#ifdef CB
	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N;
	cin >> N;
	vector<int> v(N);
	for (int i = 0; i < N; i++) {
		cin >> v[i];
	}
	vector<int> a(N);
	vector<int> b(N);
	for (int i = 1; i <= N - 2; i++) {
		a[i] = lower_bound(v.begin(), v.end(), v[i] * 2 - v[i - 1]) - v.begin() - 1;
		b[i] = lower_bound(v.begin(), v.end(), v[i] * 2 - v[i + 1]) - v.begin();
	}
	vector<array<int, 20>> spt(N);
	for (int i = 0; i < N; i++) {
		spt[i][0] = a[i];
	}
	for (int j = 1; j < 20; j++) {
		for (int l = 0, r = 1 << j - 1; r < N; l++, r++) {
			spt[l][j] = max(spt[l][j - 1], spt[r][j - 1]);
		}
	}
	auto query = [&](int l, int r) {
		int i = __lg(r - l);
		return max(spt[l][i], spt[r - (1 << i)][i]);
	};
	vector<int> ans(N);
	ans[0] = N - 1;
	ans[N - 1] = 0;
	vector<int> s;
	for (int i = N - 2; i >= 1; i--) {
		while (!s.empty() && b[s.back()] >= b[i]) {
			s.pop_back();
		}
		s.push_back(i);
		ans[i] = N - 1;
		int x = query(0, b[s.front()] + 1);
		if (x > s.front()) {
			ans[i] = 0;
			continue;
		}
		for (int j = 1; j < s.size(); j++) {
			int y = query(b[s.front()] + 1, b[s[j]] + 1);
			if (query(b[s[j]] + 1, b[s.back()] + 1) <= s.back() && y > s.back()) {
				continue;
			}
			if (y <= s[j] && x > s[j]) {
				ans[i] = 0;
				break;
			}
		}
	}
	for (int i = 0; i < N; i++) {
		cout << ans[i] << ' ';
	}
	cout << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1976 KiB
2Elfogadva3ms2204 KiB
subtask20/12
3Elfogadva3ms2316 KiB
4Futási hiba3ms2300 KiB
5Futási hiba3ms2712 KiB
6Futási hiba3ms2728 KiB
7Futási hiba3ms2776 KiB
8Futási hiba3ms2948 KiB
9Futási hiba3ms3332 KiB
10Futási hiba3ms3348 KiB
11Futási hiba3ms3304 KiB
12Futási hiba3ms3436 KiB
subtask30/28
13Futási hiba3ms3824 KiB
14Futási hiba3ms4212 KiB
15Futási hiba3ms4156 KiB
16Futási hiba3ms4284 KiB
17Futási hiba3ms4464 KiB
18Elfogadva3ms4424 KiB
19Elfogadva3ms4384 KiB
20Futási hiba3ms4656 KiB
21Futási hiba3ms4836 KiB
subtask40/35
22Futási hiba68ms41824 KiB
23Futási hiba70ms42016 KiB
24Futási hiba68ms42000 KiB
25Futási hiba70ms42416 KiB
26Futási hiba37ms26572 KiB
27Elfogadva75ms42128 KiB
28Elfogadva67ms42100 KiB
29Elfogadva65ms42136 KiB
30Elfogadva65ms42168 KiB
31Futási hiba63ms42004 KiB
subtask50/25
32Futási hiba712ms380116 KiB
33Futási hiba646ms342552 KiB
34Futási hiba731ms380148 KiB
35Futási hiba651ms342704 KiB
36Futási hiba693ms364568 KiB
37Elfogadva790ms380344 KiB
38Elfogadva768ms372464 KiB
39Elfogadva791ms380180 KiB
40Elfogadva788ms379888 KiB
41Futási hiba737ms378680 KiB
42Futási hiba675ms365488 KiB
43Futási hiba694ms374416 KiB
44Futási hiba721ms378772 KiB
45Futási hiba713ms377256 KiB
46Futási hiba712ms377384 KiB
47Futási hiba736ms378984 KiB
48Futási hiba748ms378636 KiB
49Futási hiba904ms378880 KiB
50Futási hiba750ms378832 KiB