91422024-02-15 19:50:34111A Barbárcpp17Időlimit túllépés 75/1001.014s379716 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;
	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);
		int k = s.size() - 1;
		for (int j = s.size() - 2; j >= 0; j--) {
			if (query(b[s[j]] + 1, b[s[j + 1]] + 1) > s[k]) {
				k = j;
			}
		}
		if (x > s[k]) {
			ans[i] = 0;
		}
	}
	for (int i = 0; i < N; i++) {
		cout << ans[i] << ' ';
	}
	cout << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2016 KiB
subtask212/12
3Elfogadva3ms2232 KiB
4Elfogadva3ms2468 KiB
5Elfogadva3ms2668 KiB
6Elfogadva3ms2792 KiB
7Elfogadva3ms2960 KiB
8Elfogadva3ms3168 KiB
9Elfogadva3ms3244 KiB
10Elfogadva3ms3248 KiB
11Elfogadva3ms3260 KiB
12Elfogadva3ms3328 KiB
subtask328/28
13Elfogadva3ms3940 KiB
14Elfogadva3ms3936 KiB
15Elfogadva3ms3824 KiB
16Elfogadva3ms4128 KiB
17Elfogadva3ms3972 KiB
18Elfogadva3ms3996 KiB
19Elfogadva3ms4040 KiB
20Elfogadva3ms4012 KiB
21Elfogadva3ms4012 KiB
subtask435/35
22Elfogadva68ms41232 KiB
23Elfogadva67ms41200 KiB
24Elfogadva67ms41256 KiB
25Elfogadva67ms41460 KiB
26Elfogadva37ms25592 KiB
27Elfogadva61ms41400 KiB
28Elfogadva71ms41604 KiB
29Elfogadva64ms41600 KiB
30Elfogadva61ms41484 KiB
31Elfogadva76ms41328 KiB
subtask50/25
32Elfogadva782ms379256 KiB
33Elfogadva853ms341728 KiB
34Elfogadva800ms379356 KiB
35Elfogadva707ms341928 KiB
36Elfogadva748ms363860 KiB
37Elfogadva731ms379712 KiB
38Elfogadva883ms371832 KiB
39Elfogadva734ms379528 KiB
40Elfogadva906ms379716 KiB
41Elfogadva802ms378216 KiB
42Elfogadva736ms365012 KiB
43Elfogadva754ms373640 KiB
44Elfogadva968ms378324 KiB
45Elfogadva930ms377040 KiB
46Elfogadva772ms376944 KiB
47Elfogadva828ms378556 KiB
48Időlimit túllépés1.006s378656 KiB
49Elfogadva843ms378504 KiB
50Időlimit túllépés1.014s378508 KiB