91432024-02-15 20:02:05111A Barbárcpp17Elfogadva 100/100976ms380312 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2056 KiB
subtask212/12
3Elfogadva2ms2144 KiB
4Elfogadva3ms2272 KiB
5Elfogadva3ms2344 KiB
6Elfogadva3ms2560 KiB
7Elfogadva3ms2908 KiB
8Elfogadva3ms3116 KiB
9Elfogadva3ms3072 KiB
10Elfogadva3ms3196 KiB
11Elfogadva3ms3276 KiB
12Elfogadva2ms3280 KiB
subtask328/28
13Elfogadva4ms3804 KiB
14Elfogadva3ms3896 KiB
15Elfogadva3ms3944 KiB
16Elfogadva3ms3856 KiB
17Elfogadva3ms3856 KiB
18Elfogadva3ms4120 KiB
19Elfogadva3ms4164 KiB
20Elfogadva3ms4448 KiB
21Elfogadva3ms4444 KiB
subtask435/35
22Elfogadva68ms41596 KiB
23Elfogadva67ms41504 KiB
24Elfogadva67ms41532 KiB
25Elfogadva67ms41628 KiB
26Elfogadva41ms26024 KiB
27Elfogadva63ms41784 KiB
28Elfogadva71ms41672 KiB
29Elfogadva63ms41700 KiB
30Elfogadva61ms41696 KiB
31Elfogadva79ms41764 KiB
subtask525/25
32Elfogadva959ms380080 KiB
33Elfogadva705ms342408 KiB
34Elfogadva796ms379968 KiB
35Elfogadva709ms342400 KiB
36Elfogadva759ms364372 KiB
37Elfogadva894ms380280 KiB
38Elfogadva722ms372648 KiB
39Elfogadva897ms380312 KiB
40Elfogadva744ms379896 KiB
41Elfogadva976ms378944 KiB
42Elfogadva727ms365660 KiB
43Elfogadva745ms374316 KiB
44Elfogadva968ms378812 KiB
45Elfogadva924ms377288 KiB
46Elfogadva916ms377260 KiB
47Elfogadva971ms378844 KiB
48Elfogadva797ms378844 KiB
49Elfogadva972ms378832 KiB
50Elfogadva961ms378828 KiB