91372024-02-15 18:39:48111A Barbárcpp17Wrong answer 47/1001.07s380536 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]) {
				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;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1952 KiB
2Accepted3ms2112 KiB
subtask212/12
3Accepted3ms2240 KiB
4Accepted3ms2600 KiB
5Accepted3ms2692 KiB
6Accepted3ms2920 KiB
7Accepted3ms3384 KiB
8Accepted3ms3556 KiB
9Accepted3ms3528 KiB
10Accepted3ms3744 KiB
11Accepted3ms3700 KiB
12Accepted3ms3908 KiB
subtask30/28
13Accepted3ms4140 KiB
14Accepted3ms4012 KiB
15Accepted3ms3988 KiB
16Accepted3ms4240 KiB
17Accepted3ms4372 KiB
18Accepted3ms4304 KiB
19Accepted3ms4304 KiB
20Wrong answer3ms4288 KiB
21Accepted3ms4288 KiB
subtask435/35
22Accepted75ms41448 KiB
23Accepted75ms41444 KiB
24Accepted75ms41476 KiB
25Accepted75ms41480 KiB
26Accepted37ms25876 KiB
27Accepted72ms41776 KiB
28Accepted63ms41680 KiB
29Accepted71ms41700 KiB
30Accepted70ms41732 KiB
31Accepted70ms41584 KiB
subtask50/25
32Accepted962ms379748 KiB
33Accepted851ms342176 KiB
34Accepted963ms379944 KiB
35Wrong answer711ms342404 KiB
36Wrong answer753ms364476 KiB
37Accepted899ms380536 KiB
38Accepted889ms372856 KiB
39Accepted901ms380532 KiB
40Accepted898ms380180 KiB
41Accepted966ms378980 KiB
42Accepted882ms365632 KiB
43Accepted762ms374444 KiB
44Accepted962ms378864 KiB
45Accepted768ms377392 KiB
46Accepted763ms377312 KiB
47Time limit exceeded1.029s378888 KiB
48Time limit exceeded1.021s378904 KiB
49Time limit exceeded1.07s191448 KiB
50Time limit exceeded1.059s191420 KiB