91402024-02-15 19:09:13111A Barbárcpp17Time limit exceeded 75/1001.072s379748 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);
		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 (j + 1 < s.size() && query(b[s[j]] + 1, b[s[j + 1]] + 1) <= s[j + 1] && y > s[j + 1]) {
				break;
			}
			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;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1700 KiB
2Accepted3ms1860 KiB
subtask212/12
3Accepted3ms2096 KiB
4Accepted3ms2308 KiB
5Accepted3ms2372 KiB
6Accepted3ms2644 KiB
7Accepted3ms2748 KiB
8Accepted3ms2816 KiB
9Accepted3ms2996 KiB
10Accepted3ms3360 KiB
11Accepted3ms3424 KiB
12Accepted3ms3376 KiB
subtask328/28
13Accepted3ms3900 KiB
14Accepted3ms3744 KiB
15Accepted3ms4004 KiB
16Accepted3ms3956 KiB
17Accepted3ms4132 KiB
18Accepted3ms4088 KiB
19Accepted3ms4232 KiB
20Accepted3ms4128 KiB
21Accepted3ms4084 KiB
subtask435/35
22Accepted79ms41248 KiB
23Accepted71ms41332 KiB
24Accepted81ms41568 KiB
25Accepted81ms41644 KiB
26Accepted41ms25756 KiB
27Accepted75ms41460 KiB
28Accepted65ms41468 KiB
29Accepted75ms41480 KiB
30Accepted67ms41400 KiB
31Accepted81ms41220 KiB
subtask50/25
32Time limit exceeded1.009s379280 KiB
33Accepted907ms341704 KiB
34Time limit exceeded1.016s379248 KiB
35Wrong answer759ms341948 KiB
36Wrong answer800ms363848 KiB
37Accepted953ms379748 KiB
38Accepted769ms371900 KiB
39Accepted792ms379708 KiB
40Accepted782ms379416 KiB
41Time limit exceeded1.019s378200 KiB
42Accepted781ms365032 KiB
43Accepted797ms373980 KiB
44Accepted834ms378512 KiB
45Accepted976ms377000 KiB
46Accepted820ms377152 KiB
47Accepted897ms378740 KiB
48Accepted889ms378864 KiB
49Accepted929ms378900 KiB
50Time limit exceeded1.072s191432 KiB