91232024-02-15 13:56:20111A Barbárcpp17Runtime error 12/1001.1s78308 KiB
#include <bits/stdc++.h>
using namespace std;

int random(int l, int h) {
	static mt19937 gen;
	return uniform_int_distribution<int>(l, h)(gen);
}

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 = 1000;
	cin >> N;
	vector<int> v(N);
	for (int i = 0; i < N; i++) {
		v[i] = random(1, 1000000000);
	}
	sort(v.begin(), v.end());
	for (int i = 0; i < N; i++) {
		cin >> v[i];
	}
	vector<int> ans(N);
	ans[0] = N - 1;
	ans[N - 1] = 0;
//	for (int i = 1; i < N - 1; i++) {
//		list<int> l(v.begin(), v.end());
//		auto t = next(l.begin(), i);
//		while (true) {
//			if (*t - *prev(t) <= *next(t) - *t) {
//				t = prev(l.erase(t));
//			}
//			else {
//				t = l.erase(t);
//			}
//			if (t == l.begin()) {
//				ans[i] = N - 1;
//				break;
//			}
//			if (t == prev(l.end())) {
//				ans[i] = 0;
//				break;
//			}
//		}
//	}
//	for (int i = 0; i < N; i++) {
//		cout << setw(3) << ans[i] << ' ';
//	}
//	cout << '\n';
	vector<int> a(N);
	vector<int> b(N);
	vector<int> c(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();
		c[i] = i;
	}
	vector<vector<int>> rb(N);
	for (int i = 0; i <= N - 1; i++) {
		rb[b[i]].push_back(i);
	}
	auto update_greater = [&](int l, int r, int x, int y) {
		while (r >= l) {
			if (c[r] > x) {
				c[r] = y;
			}
			r--;
		}
	};
	auto update_less = [&](int l, int r, int x, int y) {
		while (r >= l) {
			if (c[r] < x) {
				c[r] = y;
			}
			r--;
		}
	};
	for (int i = N - 1; i >= 0; i--) {
		for (int j : rb[i]) {
			update_greater(0, j, j, j);
		}
		update_less(0, a[i] - 1, a[i], N - 1);
	}
	for (int i = 1; i < N - 1; i++) {
		ans[i] = c[i] == N - 1 ? 0 : N - 1;
	}
	for (int i = 0; i < N; i++) {
		cout << setw(3) << ans[i] << ' ';
	}
	cout << '\n';
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1828 KiB
2Accepted3ms2024 KiB
subtask212/12
3Accepted3ms2240 KiB
4Accepted2ms2320 KiB
5Accepted3ms2468 KiB
6Accepted3ms2544 KiB
7Accepted3ms2636 KiB
8Accepted3ms2760 KiB
9Accepted3ms2724 KiB
10Accepted3ms2964 KiB
11Accepted3ms2968 KiB
12Accepted3ms2988 KiB
subtask30/28
13Accepted4ms3376 KiB
14Accepted4ms3264 KiB
15Runtime error4ms3668 KiB
16Runtime error3ms3344 KiB
17Wrong answer4ms3272 KiB
18Accepted4ms3276 KiB
19Accepted4ms3284 KiB
20Wrong answer4ms3272 KiB
21Runtime error3ms3356 KiB
subtask40/35
22Time limit exceeded1.1s8560 KiB
23Time limit exceeded1.075s8844 KiB
24Time limit exceeded1.07s8988 KiB
25Time limit exceeded1.082s9160 KiB
26Time limit exceeded1.074s6588 KiB
27Time limit exceeded1.062s10792 KiB
28Time limit exceeded1.059s10792 KiB
29Time limit exceeded1.075s10760 KiB
30Time limit exceeded1.078s11144 KiB
31Time limit exceeded1.067s9876 KiB
subtask50/25
32Time limit exceeded1.057s64972 KiB
33Time limit exceeded1.072s56112 KiB
34Time limit exceeded1.065s64360 KiB
35Time limit exceeded1.077s58872 KiB
36Time limit exceeded1.064s62376 KiB
37Time limit exceeded1.06s78180 KiB
38Time limit exceeded1.062s76728 KiB
39Time limit exceeded1.085s78308 KiB
40Time limit exceeded1.046s78180 KiB
41Time limit exceeded1.067s64700 KiB
42Time limit exceeded1.075s74992 KiB
43Time limit exceeded1.077s76464 KiB
44Time limit exceeded1.067s63200 KiB
45Time limit exceeded1.069s75348 KiB
46Time limit exceeded1.069s75172 KiB
47Time limit exceeded1.059s64704 KiB
48Time limit exceeded1.067s64876 KiB
49Time limit exceeded1.069s64768 KiB
50Time limit exceeded1.065s64744 KiB