91242024-02-15 13:59:41111A Barbárcpp17Időlimit túllépés 40/1001.1s97848 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

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 << ans[i] << ' ';
	}
	cout << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1836 KiB
2Elfogadva3ms2048 KiB
subtask212/12
3Elfogadva3ms2148 KiB
4Elfogadva3ms2336 KiB
5Elfogadva3ms2548 KiB
6Elfogadva3ms2784 KiB
7Elfogadva3ms2864 KiB
8Elfogadva3ms2848 KiB
9Elfogadva3ms3204 KiB
10Elfogadva3ms3124 KiB
11Elfogadva3ms3336 KiB
12Elfogadva3ms3424 KiB
subtask328/28
13Elfogadva4ms3828 KiB
14Elfogadva4ms3844 KiB
15Elfogadva4ms4184 KiB
16Elfogadva4ms4196 KiB
17Elfogadva4ms4204 KiB
18Elfogadva4ms4204 KiB
19Elfogadva4ms4240 KiB
20Elfogadva4ms4360 KiB
21Elfogadva4ms4364 KiB
subtask40/35
22Időlimit túllépés1.1s11516 KiB
23Időlimit túllépés1.078s11640 KiB
24Időlimit túllépés1.062s11620 KiB
25Időlimit túllépés1.08s11656 KiB
26Időlimit túllépés1.065s8144 KiB
27Időlimit túllépés1.07s12800 KiB
28Időlimit túllépés1.077s13016 KiB
29Időlimit túllépés1.059s12988 KiB
30Időlimit túllépés1.07s12968 KiB
31Időlimit túllépés1.082s11756 KiB
subtask50/25
32Időlimit túllépés1.041s86020 KiB
33Időlimit túllépés1.062s77624 KiB
34Időlimit túllépés1.047s86012 KiB
35Időlimit túllépés1.077s77896 KiB
36Időlimit túllépés1.088s82548 KiB
37Időlimit túllépés1.064s97840 KiB
38Időlimit túllépés1.065s95952 KiB
39Időlimit túllépés1.085s97848 KiB
40Időlimit túllépés1.078s97832 KiB
41Időlimit túllépés1.069s85880 KiB
42Időlimit túllépés1.08s93984 KiB
43Időlimit túllépés1.065s96096 KiB
44Időlimit túllépés1.072s82708 KiB
45Időlimit túllépés1.057s95316 KiB
46Időlimit túllépés1.055s95392 KiB
47Időlimit túllépés1.059s97732 KiB
48Időlimit túllépés1.078s97736 KiB
49Időlimit túllépés1.08s97656 KiB
50Időlimit túllépés1.052s97796 KiB