91372024-02-15 18:39:48111A Barbárcpp17Hibás válasz 47/1001.07s380536 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]) {
				continue;
			}
			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
1Elfogadva3ms1952 KiB
2Elfogadva3ms2112 KiB
subtask212/12
3Elfogadva3ms2240 KiB
4Elfogadva3ms2600 KiB
5Elfogadva3ms2692 KiB
6Elfogadva3ms2920 KiB
7Elfogadva3ms3384 KiB
8Elfogadva3ms3556 KiB
9Elfogadva3ms3528 KiB
10Elfogadva3ms3744 KiB
11Elfogadva3ms3700 KiB
12Elfogadva3ms3908 KiB
subtask30/28
13Elfogadva3ms4140 KiB
14Elfogadva3ms4012 KiB
15Elfogadva3ms3988 KiB
16Elfogadva3ms4240 KiB
17Elfogadva3ms4372 KiB
18Elfogadva3ms4304 KiB
19Elfogadva3ms4304 KiB
20Hibás válasz3ms4288 KiB
21Elfogadva3ms4288 KiB
subtask435/35
22Elfogadva75ms41448 KiB
23Elfogadva75ms41444 KiB
24Elfogadva75ms41476 KiB
25Elfogadva75ms41480 KiB
26Elfogadva37ms25876 KiB
27Elfogadva72ms41776 KiB
28Elfogadva63ms41680 KiB
29Elfogadva71ms41700 KiB
30Elfogadva70ms41732 KiB
31Elfogadva70ms41584 KiB
subtask50/25
32Elfogadva962ms379748 KiB
33Elfogadva851ms342176 KiB
34Elfogadva963ms379944 KiB
35Hibás válasz711ms342404 KiB
36Hibás válasz753ms364476 KiB
37Elfogadva899ms380536 KiB
38Elfogadva889ms372856 KiB
39Elfogadva901ms380532 KiB
40Elfogadva898ms380180 KiB
41Elfogadva966ms378980 KiB
42Elfogadva882ms365632 KiB
43Elfogadva762ms374444 KiB
44Elfogadva962ms378864 KiB
45Elfogadva768ms377392 KiB
46Elfogadva763ms377312 KiB
47Időlimit túllépés1.029s378888 KiB
48Időlimit túllépés1.021s378904 KiB
49Időlimit túllépés1.07s191448 KiB
50Időlimit túllépés1.059s191420 KiB