9143 2024. 02. 15 20:02:05 111 A Barbár cpp17 Elfogadva 100/100 976ms 380312 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 {
		if (l == r) {
			return -1;
		}
		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;
	vector<int> z;
	for (int i = N - 2; i >= 1; i--) {
		while (!s.empty() && b[s.back()] >= b[i]) {
			s.pop_back();
			z.pop_back();
		}
		s.push_back(i);
		int k = z.size();
		for (int j = k - 1; j >= 0; j--) {
			if (query(b[s[j]] + 1, b[s[j + 1]] + 1) > s[k]) {
				k = z[j];
				break;
			}
		}
		z.push_back(k);
		ans[i] = query(0, b[s.front()] + 1) > s[z.back()] ? 0 : N - 1;
	}
	for (int i = 0; i < N; i++) {
		cout << ans[i] << ' ';
	}
	cout << '\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1828 KiB
2 Elfogadva 3ms 2056 KiB
subtask2 12/12
3 Elfogadva 2ms 2144 KiB
4 Elfogadva 3ms 2272 KiB
5 Elfogadva 3ms 2344 KiB
6 Elfogadva 3ms 2560 KiB
7 Elfogadva 3ms 2908 KiB
8 Elfogadva 3ms 3116 KiB
9 Elfogadva 3ms 3072 KiB
10 Elfogadva 3ms 3196 KiB
11 Elfogadva 3ms 3276 KiB
12 Elfogadva 2ms 3280 KiB
subtask3 28/28
13 Elfogadva 4ms 3804 KiB
14 Elfogadva 3ms 3896 KiB
15 Elfogadva 3ms 3944 KiB
16 Elfogadva 3ms 3856 KiB
17 Elfogadva 3ms 3856 KiB
18 Elfogadva 3ms 4120 KiB
19 Elfogadva 3ms 4164 KiB
20 Elfogadva 3ms 4448 KiB
21 Elfogadva 3ms 4444 KiB
subtask4 35/35
22 Elfogadva 68ms 41596 KiB
23 Elfogadva 67ms 41504 KiB
24 Elfogadva 67ms 41532 KiB
25 Elfogadva 67ms 41628 KiB
26 Elfogadva 41ms 26024 KiB
27 Elfogadva 63ms 41784 KiB
28 Elfogadva 71ms 41672 KiB
29 Elfogadva 63ms 41700 KiB
30 Elfogadva 61ms 41696 KiB
31 Elfogadva 79ms 41764 KiB
subtask5 25/25
32 Elfogadva 959ms 380080 KiB
33 Elfogadva 705ms 342408 KiB
34 Elfogadva 796ms 379968 KiB
35 Elfogadva 709ms 342400 KiB
36 Elfogadva 759ms 364372 KiB
37 Elfogadva 894ms 380280 KiB
38 Elfogadva 722ms 372648 KiB
39 Elfogadva 897ms 380312 KiB
40 Elfogadva 744ms 379896 KiB
41 Elfogadva 976ms 378944 KiB
42 Elfogadva 727ms 365660 KiB
43 Elfogadva 745ms 374316 KiB
44 Elfogadva 968ms 378812 KiB
45 Elfogadva 924ms 377288 KiB
46 Elfogadva 916ms 377260 KiB
47 Elfogadva 971ms 378844 KiB
48 Elfogadva 797ms 378844 KiB
49 Elfogadva 972ms 378832 KiB
50 Elfogadva 961ms 378828 KiB