91402024-02-15 19:09:13111A Barbárcpp17Időlimit túllépés 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1700 KiB
2Elfogadva3ms1860 KiB
subtask212/12
3Elfogadva3ms2096 KiB
4Elfogadva3ms2308 KiB
5Elfogadva3ms2372 KiB
6Elfogadva3ms2644 KiB
7Elfogadva3ms2748 KiB
8Elfogadva3ms2816 KiB
9Elfogadva3ms2996 KiB
10Elfogadva3ms3360 KiB
11Elfogadva3ms3424 KiB
12Elfogadva3ms3376 KiB
subtask328/28
13Elfogadva3ms3900 KiB
14Elfogadva3ms3744 KiB
15Elfogadva3ms4004 KiB
16Elfogadva3ms3956 KiB
17Elfogadva3ms4132 KiB
18Elfogadva3ms4088 KiB
19Elfogadva3ms4232 KiB
20Elfogadva3ms4128 KiB
21Elfogadva3ms4084 KiB
subtask435/35
22Elfogadva79ms41248 KiB
23Elfogadva71ms41332 KiB
24Elfogadva81ms41568 KiB
25Elfogadva81ms41644 KiB
26Elfogadva41ms25756 KiB
27Elfogadva75ms41460 KiB
28Elfogadva65ms41468 KiB
29Elfogadva75ms41480 KiB
30Elfogadva67ms41400 KiB
31Elfogadva81ms41220 KiB
subtask50/25
32Időlimit túllépés1.009s379280 KiB
33Elfogadva907ms341704 KiB
34Időlimit túllépés1.016s379248 KiB
35Hibás válasz759ms341948 KiB
36Hibás válasz800ms363848 KiB
37Elfogadva953ms379748 KiB
38Elfogadva769ms371900 KiB
39Elfogadva792ms379708 KiB
40Elfogadva782ms379416 KiB
41Időlimit túllépés1.019s378200 KiB
42Elfogadva781ms365032 KiB
43Elfogadva797ms373980 KiB
44Elfogadva834ms378512 KiB
45Elfogadva976ms377000 KiB
46Elfogadva820ms377152 KiB
47Elfogadva897ms378740 KiB
48Elfogadva889ms378864 KiB
49Elfogadva929ms378900 KiB
50Időlimit túllépés1.072s191432 KiB