91232024-02-15 13:56:20111A Barbárcpp17Futási hiba 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2024 KiB
subtask212/12
3Elfogadva3ms2240 KiB
4Elfogadva2ms2320 KiB
5Elfogadva3ms2468 KiB
6Elfogadva3ms2544 KiB
7Elfogadva3ms2636 KiB
8Elfogadva3ms2760 KiB
9Elfogadva3ms2724 KiB
10Elfogadva3ms2964 KiB
11Elfogadva3ms2968 KiB
12Elfogadva3ms2988 KiB
subtask30/28
13Elfogadva4ms3376 KiB
14Elfogadva4ms3264 KiB
15Futási hiba4ms3668 KiB
16Futási hiba3ms3344 KiB
17Hibás válasz4ms3272 KiB
18Elfogadva4ms3276 KiB
19Elfogadva4ms3284 KiB
20Hibás válasz4ms3272 KiB
21Futási hiba3ms3356 KiB
subtask40/35
22Időlimit túllépés1.1s8560 KiB
23Időlimit túllépés1.075s8844 KiB
24Időlimit túllépés1.07s8988 KiB
25Időlimit túllépés1.082s9160 KiB
26Időlimit túllépés1.074s6588 KiB
27Időlimit túllépés1.062s10792 KiB
28Időlimit túllépés1.059s10792 KiB
29Időlimit túllépés1.075s10760 KiB
30Időlimit túllépés1.078s11144 KiB
31Időlimit túllépés1.067s9876 KiB
subtask50/25
32Időlimit túllépés1.057s64972 KiB
33Időlimit túllépés1.072s56112 KiB
34Időlimit túllépés1.065s64360 KiB
35Időlimit túllépés1.077s58872 KiB
36Időlimit túllépés1.064s62376 KiB
37Időlimit túllépés1.06s78180 KiB
38Időlimit túllépés1.062s76728 KiB
39Időlimit túllépés1.085s78308 KiB
40Időlimit túllépés1.046s78180 KiB
41Időlimit túllépés1.067s64700 KiB
42Időlimit túllépés1.075s74992 KiB
43Időlimit túllépés1.077s76464 KiB
44Időlimit túllépés1.067s63200 KiB
45Időlimit túllépés1.069s75348 KiB
46Időlimit túllépés1.069s75172 KiB
47Időlimit túllépés1.059s64704 KiB
48Időlimit túllépés1.067s64876 KiB
49Időlimit túllépés1.069s64768 KiB
50Időlimit túllépés1.065s64744 KiB