Submission #660056

# Submission time Handle Problem Language Result Execution time Memory
660056 2022-11-20T09:34:19 Z Radin_Zahedi2 The short shank; Redemption (BOI21_prison) C++17
100 / 100
468 ms 207436 KB
#include<bits/stdc++.h>
//#pragma GCC optimize("O2")
using namespace std;
using ll = long long;
using ld = long double;
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define sz(x) (int)x.size()
#define endl '\n'
const int mod = 1e9 + 7;
const int inf = 2e9 + 5;
const ll linf = 9e18 + 5;


int n, d, t;
const int N = 2e6 + 5;
int arr[N];

int all = 0;
vector<int> adj[N];
int depth[N];
vector<int> have;

void init() {
}

void input() {
	cin >> n >> d >> t;

	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
	}
}

void creadj() {
	vector<int> have;

	bool can[n + 1];
	int ends[n + 1];
	fill(ends + 1, ends + n + 1, 0);


	for (int i = 1; i <= n; i++) {
		while (!have.empty()) {
			int ind = have.back();
			if (arr[ind] - ind < arr[i] - i) {
				break;
			}
			have.pop_back();
		}
		have.pb(i);

		if (arr[have[0]] - have[0] <= t - i) {
			int l = 0, r = sz(have);

			while (l + 1 != r) {
				int m = (l + r) / 2;

				if (arr[have[m]] - have[m] <= t - i) {
					l = m;
				}
				else {
					r = m;
				}
			}

			ends[have[l]]++;
			can[i] = true;
		}
		else {
			can[i] = false;
		}
	}


	all = 1;
	stack<int> verts;
	verts.push(0);
	for (int i = n; i >= 1; i--) {
		if (!can[i]) {
			continue;
		}
		all++;

		adj[verts.top()].pb(i);

		verts.push(i);
		for (int j = 0; j < ends[i]; j++) {
			verts.pop();
		}
	}
}

void dfsdepth(int u) {
	for (auto v : adj[u]) {
		dfsdepth(v);
		depth[u] = max(depth[u], depth[v] + 1);
	}

	for (int i = 0; i < sz(adj[u]); i++) {
		if (depth[adj[u][0]] < depth[adj[u][i]]) {
			swap(adj[u][0], adj[u][i]);
		}
	}
}

void dfs(int u, int d) {
	if (adj[u].empty()) {
		have.pb(d);
		return;
	}
	
	dfs(adj[u][0], d + 1);
	for (auto v : adj[u]) {
		if (v != adj[u][0]) {
			dfs(v, 1);
		}
	}
}

void solve() {
	creadj();
	dfsdepth(0);
	dfs(0, 1);

	if (adj[0].empty()) {
		cout << 0;
		return;
	}

	sort(have.begin(), have.end());
	reverse(have.begin(), have.end());
	for (int i = 0; i < d && i < sz(have); i++) {
		all -= have[i];
		all++;
	}

	cout << all;
}

void output() {
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int number_of_testcases = 1;
	//cin >> number_of_testcases;
	while (number_of_testcases--) {
		init();

		input();

		solve();

		output();
	}

	return 0;
}

# Verdict Execution time Memory Grader output
1 Correct 23 ms 47188 KB Output is correct
2 Correct 24 ms 47268 KB Output is correct
3 Correct 22 ms 47204 KB Output is correct
4 Correct 22 ms 47316 KB Output is correct
5 Correct 23 ms 47248 KB Output is correct
6 Correct 23 ms 47252 KB Output is correct
7 Correct 24 ms 47188 KB Output is correct
8 Correct 23 ms 47316 KB Output is correct
9 Correct 23 ms 47316 KB Output is correct
10 Correct 23 ms 47312 KB Output is correct
11 Correct 24 ms 47340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 47200 KB Output is correct
2 Correct 122 ms 63924 KB Output is correct
3 Correct 116 ms 63260 KB Output is correct
4 Correct 124 ms 64316 KB Output is correct
5 Correct 105 ms 65320 KB Output is correct
6 Correct 100 ms 61340 KB Output is correct
7 Correct 155 ms 100072 KB Output is correct
8 Correct 104 ms 63724 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 47188 KB Output is correct
2 Correct 24 ms 47268 KB Output is correct
3 Correct 22 ms 47204 KB Output is correct
4 Correct 22 ms 47316 KB Output is correct
5 Correct 23 ms 47248 KB Output is correct
6 Correct 23 ms 47252 KB Output is correct
7 Correct 24 ms 47188 KB Output is correct
8 Correct 23 ms 47316 KB Output is correct
9 Correct 23 ms 47316 KB Output is correct
10 Correct 23 ms 47312 KB Output is correct
11 Correct 24 ms 47340 KB Output is correct
12 Correct 22 ms 47176 KB Output is correct
13 Correct 23 ms 47280 KB Output is correct
14 Correct 24 ms 47252 KB Output is correct
15 Correct 24 ms 47240 KB Output is correct
16 Correct 23 ms 47212 KB Output is correct
17 Correct 24 ms 47320 KB Output is correct
18 Correct 23 ms 47280 KB Output is correct
19 Correct 24 ms 47316 KB Output is correct
20 Correct 28 ms 47320 KB Output is correct
21 Correct 27 ms 47252 KB Output is correct
22 Correct 23 ms 47216 KB Output is correct
23 Correct 24 ms 47432 KB Output is correct
24 Correct 24 ms 47316 KB Output is correct
25 Correct 27 ms 47416 KB Output is correct
26 Correct 26 ms 47344 KB Output is correct
27 Correct 26 ms 47332 KB Output is correct
28 Correct 25 ms 47440 KB Output is correct
29 Correct 25 ms 47324 KB Output is correct
30 Correct 28 ms 47308 KB Output is correct
31 Correct 25 ms 47412 KB Output is correct
32 Correct 26 ms 47308 KB Output is correct
33 Correct 26 ms 47356 KB Output is correct
34 Correct 24 ms 47416 KB Output is correct
35 Correct 24 ms 47480 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 47176 KB Output is correct
2 Correct 39 ms 50004 KB Output is correct
3 Correct 38 ms 49908 KB Output is correct
4 Correct 39 ms 51924 KB Output is correct
5 Correct 39 ms 52896 KB Output is correct
6 Correct 44 ms 52972 KB Output is correct
7 Correct 36 ms 49484 KB Output is correct
8 Correct 34 ms 49240 KB Output is correct
9 Correct 38 ms 55112 KB Output is correct
10 Correct 33 ms 49776 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 47188 KB Output is correct
2 Correct 24 ms 47268 KB Output is correct
3 Correct 22 ms 47204 KB Output is correct
4 Correct 22 ms 47316 KB Output is correct
5 Correct 23 ms 47248 KB Output is correct
6 Correct 23 ms 47252 KB Output is correct
7 Correct 24 ms 47188 KB Output is correct
8 Correct 23 ms 47316 KB Output is correct
9 Correct 23 ms 47316 KB Output is correct
10 Correct 23 ms 47312 KB Output is correct
11 Correct 24 ms 47340 KB Output is correct
12 Correct 22 ms 47176 KB Output is correct
13 Correct 23 ms 47280 KB Output is correct
14 Correct 24 ms 47252 KB Output is correct
15 Correct 24 ms 47240 KB Output is correct
16 Correct 23 ms 47212 KB Output is correct
17 Correct 24 ms 47320 KB Output is correct
18 Correct 23 ms 47280 KB Output is correct
19 Correct 24 ms 47316 KB Output is correct
20 Correct 28 ms 47320 KB Output is correct
21 Correct 27 ms 47252 KB Output is correct
22 Correct 23 ms 47216 KB Output is correct
23 Correct 24 ms 47432 KB Output is correct
24 Correct 24 ms 47316 KB Output is correct
25 Correct 27 ms 47416 KB Output is correct
26 Correct 26 ms 47344 KB Output is correct
27 Correct 26 ms 47332 KB Output is correct
28 Correct 25 ms 47440 KB Output is correct
29 Correct 25 ms 47324 KB Output is correct
30 Correct 28 ms 47308 KB Output is correct
31 Correct 25 ms 47412 KB Output is correct
32 Correct 26 ms 47308 KB Output is correct
33 Correct 26 ms 47356 KB Output is correct
34 Correct 24 ms 47416 KB Output is correct
35 Correct 24 ms 47480 KB Output is correct
36 Correct 23 ms 47176 KB Output is correct
37 Correct 39 ms 50004 KB Output is correct
38 Correct 38 ms 49908 KB Output is correct
39 Correct 39 ms 51924 KB Output is correct
40 Correct 39 ms 52896 KB Output is correct
41 Correct 44 ms 52972 KB Output is correct
42 Correct 36 ms 49484 KB Output is correct
43 Correct 34 ms 49240 KB Output is correct
44 Correct 38 ms 55112 KB Output is correct
45 Correct 33 ms 49776 KB Output is correct
46 Correct 23 ms 47208 KB Output is correct
47 Correct 27 ms 47260 KB Output is correct
48 Correct 24 ms 47296 KB Output is correct
49 Correct 24 ms 47316 KB Output is correct
50 Correct 23 ms 47304 KB Output is correct
51 Correct 23 ms 47280 KB Output is correct
52 Correct 24 ms 47208 KB Output is correct
53 Correct 24 ms 47264 KB Output is correct
54 Correct 24 ms 47272 KB Output is correct
55 Correct 24 ms 47264 KB Output is correct
56 Correct 24 ms 47244 KB Output is correct
57 Correct 25 ms 47444 KB Output is correct
58 Correct 24 ms 47384 KB Output is correct
59 Correct 24 ms 47444 KB Output is correct
60 Correct 25 ms 47388 KB Output is correct
61 Correct 26 ms 47444 KB Output is correct
62 Correct 32 ms 47316 KB Output is correct
63 Correct 25 ms 47404 KB Output is correct
64 Correct 25 ms 47416 KB Output is correct
65 Correct 24 ms 47392 KB Output is correct
66 Correct 24 ms 47348 KB Output is correct
67 Correct 24 ms 47392 KB Output is correct
68 Correct 25 ms 47444 KB Output is correct
69 Correct 25 ms 47444 KB Output is correct
70 Correct 24 ms 47272 KB Output is correct
71 Correct 38 ms 50004 KB Output is correct
72 Correct 40 ms 49888 KB Output is correct
73 Correct 40 ms 51792 KB Output is correct
74 Correct 42 ms 52872 KB Output is correct
75 Correct 41 ms 52984 KB Output is correct
76 Correct 35 ms 49468 KB Output is correct
77 Correct 34 ms 49228 KB Output is correct
78 Correct 39 ms 55208 KB Output is correct
79 Correct 33 ms 49748 KB Output is correct
80 Correct 38 ms 49972 KB Output is correct
81 Correct 39 ms 50132 KB Output is correct
82 Correct 42 ms 49872 KB Output is correct
83 Correct 38 ms 50612 KB Output is correct
84 Correct 36 ms 49952 KB Output is correct
85 Correct 42 ms 53148 KB Output is correct
86 Correct 36 ms 50404 KB Output is correct
87 Correct 34 ms 49156 KB Output is correct
88 Correct 37 ms 53756 KB Output is correct
89 Correct 38 ms 54860 KB Output is correct
90 Correct 37 ms 53080 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 47188 KB Output is correct
2 Correct 24 ms 47268 KB Output is correct
3 Correct 22 ms 47204 KB Output is correct
4 Correct 22 ms 47316 KB Output is correct
5 Correct 23 ms 47248 KB Output is correct
6 Correct 23 ms 47252 KB Output is correct
7 Correct 24 ms 47188 KB Output is correct
8 Correct 23 ms 47316 KB Output is correct
9 Correct 23 ms 47316 KB Output is correct
10 Correct 23 ms 47312 KB Output is correct
11 Correct 24 ms 47340 KB Output is correct
12 Correct 23 ms 47200 KB Output is correct
13 Correct 122 ms 63924 KB Output is correct
14 Correct 116 ms 63260 KB Output is correct
15 Correct 124 ms 64316 KB Output is correct
16 Correct 105 ms 65320 KB Output is correct
17 Correct 100 ms 61340 KB Output is correct
18 Correct 155 ms 100072 KB Output is correct
19 Correct 104 ms 63724 KB Output is correct
20 Correct 22 ms 47176 KB Output is correct
21 Correct 23 ms 47280 KB Output is correct
22 Correct 24 ms 47252 KB Output is correct
23 Correct 24 ms 47240 KB Output is correct
24 Correct 23 ms 47212 KB Output is correct
25 Correct 24 ms 47320 KB Output is correct
26 Correct 23 ms 47280 KB Output is correct
27 Correct 24 ms 47316 KB Output is correct
28 Correct 28 ms 47320 KB Output is correct
29 Correct 27 ms 47252 KB Output is correct
30 Correct 23 ms 47216 KB Output is correct
31 Correct 24 ms 47432 KB Output is correct
32 Correct 24 ms 47316 KB Output is correct
33 Correct 27 ms 47416 KB Output is correct
34 Correct 26 ms 47344 KB Output is correct
35 Correct 26 ms 47332 KB Output is correct
36 Correct 25 ms 47440 KB Output is correct
37 Correct 25 ms 47324 KB Output is correct
38 Correct 28 ms 47308 KB Output is correct
39 Correct 25 ms 47412 KB Output is correct
40 Correct 26 ms 47308 KB Output is correct
41 Correct 26 ms 47356 KB Output is correct
42 Correct 24 ms 47416 KB Output is correct
43 Correct 24 ms 47480 KB Output is correct
44 Correct 23 ms 47176 KB Output is correct
45 Correct 39 ms 50004 KB Output is correct
46 Correct 38 ms 49908 KB Output is correct
47 Correct 39 ms 51924 KB Output is correct
48 Correct 39 ms 52896 KB Output is correct
49 Correct 44 ms 52972 KB Output is correct
50 Correct 36 ms 49484 KB Output is correct
51 Correct 34 ms 49240 KB Output is correct
52 Correct 38 ms 55112 KB Output is correct
53 Correct 33 ms 49776 KB Output is correct
54 Correct 23 ms 47208 KB Output is correct
55 Correct 27 ms 47260 KB Output is correct
56 Correct 24 ms 47296 KB Output is correct
57 Correct 24 ms 47316 KB Output is correct
58 Correct 23 ms 47304 KB Output is correct
59 Correct 23 ms 47280 KB Output is correct
60 Correct 24 ms 47208 KB Output is correct
61 Correct 24 ms 47264 KB Output is correct
62 Correct 24 ms 47272 KB Output is correct
63 Correct 24 ms 47264 KB Output is correct
64 Correct 24 ms 47244 KB Output is correct
65 Correct 25 ms 47444 KB Output is correct
66 Correct 24 ms 47384 KB Output is correct
67 Correct 24 ms 47444 KB Output is correct
68 Correct 25 ms 47388 KB Output is correct
69 Correct 26 ms 47444 KB Output is correct
70 Correct 32 ms 47316 KB Output is correct
71 Correct 25 ms 47404 KB Output is correct
72 Correct 25 ms 47416 KB Output is correct
73 Correct 24 ms 47392 KB Output is correct
74 Correct 24 ms 47348 KB Output is correct
75 Correct 24 ms 47392 KB Output is correct
76 Correct 25 ms 47444 KB Output is correct
77 Correct 25 ms 47444 KB Output is correct
78 Correct 24 ms 47272 KB Output is correct
79 Correct 38 ms 50004 KB Output is correct
80 Correct 40 ms 49888 KB Output is correct
81 Correct 40 ms 51792 KB Output is correct
82 Correct 42 ms 52872 KB Output is correct
83 Correct 41 ms 52984 KB Output is correct
84 Correct 35 ms 49468 KB Output is correct
85 Correct 34 ms 49228 KB Output is correct
86 Correct 39 ms 55208 KB Output is correct
87 Correct 33 ms 49748 KB Output is correct
88 Correct 38 ms 49972 KB Output is correct
89 Correct 39 ms 50132 KB Output is correct
90 Correct 42 ms 49872 KB Output is correct
91 Correct 38 ms 50612 KB Output is correct
92 Correct 36 ms 49952 KB Output is correct
93 Correct 42 ms 53148 KB Output is correct
94 Correct 36 ms 50404 KB Output is correct
95 Correct 34 ms 49156 KB Output is correct
96 Correct 37 ms 53756 KB Output is correct
97 Correct 38 ms 54860 KB Output is correct
98 Correct 37 ms 53080 KB Output is correct
99 Correct 23 ms 47204 KB Output is correct
100 Correct 26 ms 47220 KB Output is correct
101 Correct 25 ms 47304 KB Output is correct
102 Correct 24 ms 47248 KB Output is correct
103 Correct 25 ms 47256 KB Output is correct
104 Correct 25 ms 47176 KB Output is correct
105 Correct 24 ms 47188 KB Output is correct
106 Correct 24 ms 47264 KB Output is correct
107 Correct 25 ms 47188 KB Output is correct
108 Correct 24 ms 47220 KB Output is correct
109 Correct 24 ms 47316 KB Output is correct
110 Correct 27 ms 47308 KB Output is correct
111 Correct 129 ms 64060 KB Output is correct
112 Correct 115 ms 63296 KB Output is correct
113 Correct 121 ms 64480 KB Output is correct
114 Correct 106 ms 65348 KB Output is correct
115 Correct 98 ms 61352 KB Output is correct
116 Correct 131 ms 99984 KB Output is correct
117 Correct 101 ms 63772 KB Output is correct
118 Correct 24 ms 47444 KB Output is correct
119 Correct 23 ms 47332 KB Output is correct
120 Correct 25 ms 47436 KB Output is correct
121 Correct 24 ms 47332 KB Output is correct
122 Correct 25 ms 47384 KB Output is correct
123 Correct 25 ms 47436 KB Output is correct
124 Correct 24 ms 47448 KB Output is correct
125 Correct 23 ms 47316 KB Output is correct
126 Correct 26 ms 47396 KB Output is correct
127 Correct 27 ms 47328 KB Output is correct
128 Correct 26 ms 47360 KB Output is correct
129 Correct 27 ms 47444 KB Output is correct
130 Correct 25 ms 47448 KB Output is correct
131 Correct 24 ms 47224 KB Output is correct
132 Correct 39 ms 50016 KB Output is correct
133 Correct 38 ms 49868 KB Output is correct
134 Correct 40 ms 51764 KB Output is correct
135 Correct 42 ms 52940 KB Output is correct
136 Correct 43 ms 52988 KB Output is correct
137 Correct 34 ms 49492 KB Output is correct
138 Correct 34 ms 49204 KB Output is correct
139 Correct 40 ms 55136 KB Output is correct
140 Correct 34 ms 49748 KB Output is correct
141 Correct 37 ms 49852 KB Output is correct
142 Correct 40 ms 49996 KB Output is correct
143 Correct 38 ms 49872 KB Output is correct
144 Correct 45 ms 50656 KB Output is correct
145 Correct 36 ms 50004 KB Output is correct
146 Correct 42 ms 53064 KB Output is correct
147 Correct 36 ms 50448 KB Output is correct
148 Correct 34 ms 49220 KB Output is correct
149 Correct 41 ms 53816 KB Output is correct
150 Correct 44 ms 54804 KB Output is correct
151 Correct 38 ms 53080 KB Output is correct
152 Correct 411 ms 114084 KB Output is correct
153 Correct 468 ms 116684 KB Output is correct
154 Correct 450 ms 118196 KB Output is correct
155 Correct 453 ms 135444 KB Output is correct
156 Correct 385 ms 119432 KB Output is correct
157 Correct 293 ms 92768 KB Output is correct
158 Correct 331 ms 114624 KB Output is correct
159 Correct 439 ms 207436 KB Output is correct
160 Correct 454 ms 194972 KB Output is correct
161 Correct 302 ms 100920 KB Output is correct
162 Correct 317 ms 101848 KB Output is correct