Submission #733610

# Submission time Handle Problem Language Result Execution time Memory
733610 2023-05-01T04:47:37 Z SanguineChameleon Jakarta Skyscrapers (APIO15_skyscraper) C++17
57 / 100
255 ms 240896 KB
#include <bits/stdc++.h>
using namespace std;

void just_do_it();

int main() {
	#ifdef KAMIRULEZ
		freopen("kamirulez.inp", "r", stdin);
		freopen("kamirulez.out", "w", stdout);
	#endif
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	just_do_it();
	return 0;
}

const int maxN = 3e4 + 20;
const int maxC = 2e6 + 20;
const int inf = 1e9 + 20;
int B[maxN];
int P[maxN];
vector<int> adj0[maxN];
vector<int> adj1[maxC];
int dist[maxC];
int pos[maxC];
bool flag[maxN];
int id[maxN];

void just_do_it() {
	fill_n(pos, maxC, -1);
	int N, M;
	cin >> N >> M;
	const int lim = sqrt(N);
	int cnt = N;
	for (int i = 0; i < M; i++) {
		cin >> B[i] >> P[i];
		if (P[i] > lim) {
			int cur = B[i] % P[i];
			int nxt = cur + P[i];
			for (; cur < N; cur += P[i], nxt += P[i]) {
				if (nxt < N) {
					adj1[cnt].emplace_back(cnt + 1);
					adj1[cnt + 1].emplace_back(cnt);
				}
				if (cur == B[i]) {
					adj0[B[i]].emplace_back(cnt);
				}
				pos[cnt] = cur;
				cnt++;
			}
		}
	}
	for (int d = 1; d <= lim; d++) {
		for (int i = 0; i < N; i++) {
			flag[i] = false;
		}
		bool found = false;
		for (int i = 0; i < M; i++) {
			if (P[i] == d) {
				found = true;
				break;
			}
		}
		if (!found) {
			continue;
		}
		for (int i = 0; i < d; i++) {
			int cur = i;
			int nxt = cur + d;
			for (; cur < N; cur += d, nxt += d) {
				if (nxt < N) {
					adj1[cnt].emplace_back(cnt + 1);
					adj1[cnt + 1].emplace_back(cnt);
				}
				id[cur] = cnt;
				pos[cnt] = cur;
				cnt++;
			}
		}
		for (int i = 0; i < M; i++) {
			if (P[i] == d && !flag[B[i]]) {
				flag[B[i]] = true;
				adj0[B[i]].emplace_back(id[B[i]]);
			}
		}
	}
	assert(cnt < maxC);
	for (int i = 0; i < cnt; i++) {
		dist[i] = inf;
	}
	dist[B[0]] = 0;
	deque<int> q = {B[0]};
	while (!q.empty()) {
		int u = q.front();
		if (u == B[1]) {
			cout << dist[u];
			return;
		}
		q.pop_front();
		if (u < N) {
			for (auto v: adj0[u]) {
				if (dist[u] < dist[v]) {
					dist[v] = dist[u];
					q.push_front(v);
				}
			}
		}
		else if (pos[u] != -1) {
			int v = pos[u];
			if (dist[u] < dist[v]) {
				dist[v] = dist[u];
				q.push_front(v);
			}
		}
		for (auto v: adj1[u]) {
			if (dist[u] + 1 < dist[v]) {
				dist[v] = dist[u] + 1;
				q.push_back(v);
			}
		}
	}
	cout << -1;
}
# Verdict Execution time Memory Grader output
1 Correct 32 ms 55808 KB Output is correct
2 Correct 28 ms 55760 KB Output is correct
3 Correct 27 ms 55744 KB Output is correct
4 Correct 29 ms 55764 KB Output is correct
5 Correct 30 ms 55804 KB Output is correct
6 Correct 29 ms 55780 KB Output is correct
7 Correct 27 ms 55740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 55728 KB Output is correct
2 Correct 28 ms 55756 KB Output is correct
3 Correct 29 ms 55764 KB Output is correct
4 Correct 31 ms 55840 KB Output is correct
5 Correct 33 ms 55712 KB Output is correct
6 Correct 31 ms 55816 KB Output is correct
7 Correct 29 ms 55764 KB Output is correct
8 Correct 29 ms 55764 KB Output is correct
9 Correct 29 ms 55812 KB Output is correct
10 Correct 28 ms 55872 KB Output is correct
11 Correct 28 ms 56048 KB Output is correct
12 Correct 28 ms 55800 KB Output is correct
13 Correct 28 ms 55764 KB Output is correct
14 Correct 34 ms 56020 KB Output is correct
15 Correct 29 ms 56012 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 31 ms 55824 KB Output is correct
2 Correct 31 ms 55836 KB Output is correct
3 Correct 30 ms 55828 KB Output is correct
4 Correct 29 ms 55820 KB Output is correct
5 Correct 28 ms 55840 KB Output is correct
6 Correct 29 ms 55840 KB Output is correct
7 Correct 29 ms 55780 KB Output is correct
8 Correct 33 ms 55832 KB Output is correct
9 Correct 28 ms 55796 KB Output is correct
10 Correct 28 ms 55900 KB Output is correct
11 Correct 29 ms 56000 KB Output is correct
12 Correct 29 ms 55764 KB Output is correct
13 Correct 28 ms 55748 KB Output is correct
14 Correct 29 ms 56020 KB Output is correct
15 Correct 30 ms 56020 KB Output is correct
16 Correct 28 ms 56020 KB Output is correct
17 Correct 32 ms 56788 KB Output is correct
18 Correct 32 ms 57172 KB Output is correct
19 Correct 29 ms 56564 KB Output is correct
20 Correct 28 ms 55984 KB Output is correct
21 Correct 29 ms 55904 KB Output is correct
22 Correct 29 ms 56548 KB Output is correct
23 Correct 34 ms 56904 KB Output is correct
24 Correct 36 ms 57948 KB Output is correct
25 Correct 31 ms 56228 KB Output is correct
26 Correct 32 ms 57676 KB Output is correct
27 Correct 30 ms 56988 KB Output is correct
28 Correct 34 ms 58320 KB Output is correct
29 Correct 33 ms 58060 KB Output is correct
30 Correct 29 ms 56392 KB Output is correct
31 Correct 32 ms 56988 KB Output is correct
32 Correct 31 ms 56764 KB Output is correct
33 Correct 46 ms 60368 KB Output is correct
34 Correct 44 ms 60244 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 28 ms 55832 KB Output is correct
2 Correct 27 ms 55732 KB Output is correct
3 Correct 31 ms 55712 KB Output is correct
4 Correct 28 ms 55760 KB Output is correct
5 Correct 28 ms 55764 KB Output is correct
6 Correct 29 ms 55840 KB Output is correct
7 Correct 31 ms 55760 KB Output is correct
8 Correct 30 ms 55728 KB Output is correct
9 Correct 27 ms 55816 KB Output is correct
10 Correct 30 ms 55888 KB Output is correct
11 Correct 29 ms 56020 KB Output is correct
12 Correct 29 ms 55816 KB Output is correct
13 Correct 30 ms 55836 KB Output is correct
14 Correct 29 ms 56100 KB Output is correct
15 Correct 29 ms 55980 KB Output is correct
16 Correct 31 ms 55916 KB Output is correct
17 Correct 31 ms 56740 KB Output is correct
18 Correct 30 ms 57064 KB Output is correct
19 Correct 32 ms 56660 KB Output is correct
20 Correct 28 ms 56004 KB Output is correct
21 Correct 28 ms 55892 KB Output is correct
22 Correct 31 ms 56660 KB Output is correct
23 Correct 32 ms 56860 KB Output is correct
24 Correct 33 ms 57940 KB Output is correct
25 Correct 28 ms 56128 KB Output is correct
26 Correct 33 ms 57512 KB Output is correct
27 Correct 32 ms 57072 KB Output is correct
28 Correct 35 ms 58488 KB Output is correct
29 Correct 37 ms 58008 KB Output is correct
30 Correct 32 ms 56432 KB Output is correct
31 Correct 32 ms 57044 KB Output is correct
32 Correct 31 ms 56668 KB Output is correct
33 Correct 46 ms 60272 KB Output is correct
34 Correct 41 ms 60356 KB Output is correct
35 Correct 49 ms 60432 KB Output is correct
36 Correct 40 ms 57284 KB Output is correct
37 Correct 55 ms 63564 KB Output is correct
38 Correct 65 ms 63308 KB Output is correct
39 Correct 51 ms 63244 KB Output is correct
40 Correct 49 ms 63264 KB Output is correct
41 Correct 52 ms 63236 KB Output is correct
42 Correct 35 ms 57688 KB Output is correct
43 Correct 37 ms 57164 KB Output is correct
44 Correct 38 ms 56128 KB Output is correct
45 Correct 156 ms 73484 KB Output is correct
46 Correct 126 ms 73444 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 55716 KB Output is correct
2 Correct 29 ms 55696 KB Output is correct
3 Correct 32 ms 55824 KB Output is correct
4 Correct 29 ms 55740 KB Output is correct
5 Correct 29 ms 55824 KB Output is correct
6 Correct 29 ms 55776 KB Output is correct
7 Correct 29 ms 55740 KB Output is correct
8 Correct 29 ms 55764 KB Output is correct
9 Correct 31 ms 55780 KB Output is correct
10 Correct 28 ms 55916 KB Output is correct
11 Correct 30 ms 56020 KB Output is correct
12 Correct 29 ms 55788 KB Output is correct
13 Correct 29 ms 55856 KB Output is correct
14 Correct 33 ms 56084 KB Output is correct
15 Correct 31 ms 56020 KB Output is correct
16 Correct 37 ms 56020 KB Output is correct
17 Correct 30 ms 56864 KB Output is correct
18 Correct 32 ms 57152 KB Output is correct
19 Correct 30 ms 56532 KB Output is correct
20 Correct 29 ms 55884 KB Output is correct
21 Correct 29 ms 55900 KB Output is correct
22 Correct 35 ms 56668 KB Output is correct
23 Correct 35 ms 56944 KB Output is correct
24 Correct 36 ms 57892 KB Output is correct
25 Correct 30 ms 56148 KB Output is correct
26 Correct 31 ms 57508 KB Output is correct
27 Correct 29 ms 56884 KB Output is correct
28 Correct 35 ms 58428 KB Output is correct
29 Correct 34 ms 58100 KB Output is correct
30 Correct 30 ms 56504 KB Output is correct
31 Correct 31 ms 57000 KB Output is correct
32 Correct 32 ms 56652 KB Output is correct
33 Correct 45 ms 60348 KB Output is correct
34 Correct 40 ms 60328 KB Output is correct
35 Correct 46 ms 60364 KB Output is correct
36 Correct 37 ms 57300 KB Output is correct
37 Correct 53 ms 63564 KB Output is correct
38 Correct 67 ms 63196 KB Output is correct
39 Correct 49 ms 63176 KB Output is correct
40 Correct 51 ms 63308 KB Output is correct
41 Correct 51 ms 63340 KB Output is correct
42 Correct 43 ms 57812 KB Output is correct
43 Correct 46 ms 57164 KB Output is correct
44 Correct 32 ms 56148 KB Output is correct
45 Correct 160 ms 73480 KB Output is correct
46 Correct 114 ms 73668 KB Output is correct
47 Correct 233 ms 118288 KB Output is correct
48 Runtime error 255 ms 240896 KB Execution killed with signal 11
49 Halted 0 ms 0 KB -