# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
249236 | 2020-07-14T14:00:24 Z | hunni10 | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 1000 ms | 100784 KB |
#include<stdio.h> #include<algorithm> #include<vector> #include<set> #include<map> #include<bitset> #include<math.h> #include<string.h> #include<queue> #include<list> #include<time.h> #include<assert.h> #include<unordered_set> #define MAX_DIVISOR 512 using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef pair<int, ll> pil; typedef pair<ll, int> pli; int n, m; int b[30000]; int p[30000]; int shortest[30000]; vector<int> building_doge[30000]; vector<vector<int> > div_grid[MAX_DIVISOR+1]; bool visited[30000] = {0, }; bool inSorted[30000] = { 0, }; set<pii> sorted; int main() { scanf("%d %d", &n, &m); for (int i = 0; i < m; i++) { scanf("%d %d", b + i, p + i); } for (int i = 0; i < m; i++) { shortest[i] = 0x7FFFFFFF; } for (int i = 1; i <= MAX_DIVISOR; i++) { div_grid[i].assign(i, {}); } for (int i = 0; i < m; i++) { building_doge[b[i]].push_back(i); for (int divisor = 1; divisor <= MAX_DIVISOR; divisor++) { div_grid[divisor][b[i] % divisor].push_back(i); } } shortest[0] = 0; inSorted[0] = true; sorted.insert({ 0, 0 }); while (true) { if (sorted.empty()) { printf("-1"); break; } pii now = *sorted.begin(); if (now.second == 1) { printf("%d", now.first); break; } visited[now.second] = true; if (p[now.second] <= MAX_DIVISOR) { for (int v : div_grid[p[now.second]][b[now.second] % p[now.second]]) { if (visited[v]) continue; int times = (b[v] - b[now.second]) / p[now.second]; if (times < 0) times = -times; times += now.first; if (times < shortest[v]) { if (inSorted) { sorted.erase({ shortest[v], v }); } shortest[v] = times; sorted.insert({ shortest[v], v }); inSorted[v] = true; } } } int i = b[now.second] % p[now.second]; for (; i < n; i+= p[now.second]) { for (int v : building_doge[i]) { if (visited[v]) continue; if ((i - b[now.second]) % p[now.second] == 0) { int times = (i - b[now.second]) / p[now.second]; if (times < 0) times = -times; times += now.first; if (times < shortest[v]) { if (inSorted) { sorted.erase({ shortest[v], v }); } shortest[v] = times; sorted.insert({ shortest[v], v }); inSorted[v] = true; } } } } sorted.erase(sorted.begin()); } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 4224 KB | Output is correct |
2 | Correct | 3 ms | 4096 KB | Output is correct |
3 | Correct | 2 ms | 4096 KB | Output is correct |
4 | Correct | 3 ms | 4224 KB | Output is correct |
5 | Correct | 3 ms | 4224 KB | Output is correct |
6 | Correct | 3 ms | 4224 KB | Output is correct |
7 | Correct | 3 ms | 4224 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 4224 KB | Output is correct |
2 | Correct | 3 ms | 4096 KB | Output is correct |
3 | Correct | 2 ms | 4096 KB | Output is correct |
4 | Correct | 4 ms | 4224 KB | Output is correct |
5 | Correct | 3 ms | 4224 KB | Output is correct |
6 | Correct | 3 ms | 4224 KB | Output is correct |
7 | Correct | 3 ms | 4224 KB | Output is correct |
8 | Correct | 4 ms | 4352 KB | Output is correct |
9 | Correct | 4 ms | 4608 KB | Output is correct |
10 | Correct | 15 ms | 6016 KB | Output is correct |
11 | Correct | 47 ms | 10616 KB | Output is correct |
12 | Correct | 26 ms | 8448 KB | Output is correct |
13 | Correct | 56 ms | 9848 KB | Output is correct |
14 | Correct | 43 ms | 10360 KB | Output is correct |
15 | Correct | 43 ms | 10360 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 4224 KB | Output is correct |
2 | Correct | 3 ms | 4096 KB | Output is correct |
3 | Correct | 3 ms | 4096 KB | Output is correct |
4 | Correct | 3 ms | 4224 KB | Output is correct |
5 | Correct | 3 ms | 4224 KB | Output is correct |
6 | Correct | 4 ms | 4224 KB | Output is correct |
7 | Correct | 2 ms | 4224 KB | Output is correct |
8 | Correct | 3 ms | 4352 KB | Output is correct |
9 | Correct | 4 ms | 4608 KB | Output is correct |
10 | Correct | 16 ms | 6016 KB | Output is correct |
11 | Correct | 48 ms | 10616 KB | Output is correct |
12 | Correct | 27 ms | 8448 KB | Output is correct |
13 | Correct | 55 ms | 9848 KB | Output is correct |
14 | Correct | 44 ms | 10360 KB | Output is correct |
15 | Correct | 43 ms | 10360 KB | Output is correct |
16 | Correct | 29 ms | 7800 KB | Output is correct |
17 | Correct | 83 ms | 11768 KB | Output is correct |
18 | Correct | 60 ms | 9208 KB | Output is correct |
19 | Correct | 29 ms | 7800 KB | Output is correct |
20 | Correct | 136 ms | 12536 KB | Output is correct |
21 | Correct | 44 ms | 9464 KB | Output is correct |
22 | Correct | 36 ms | 8312 KB | Output is correct |
23 | Correct | 50 ms | 9208 KB | Output is correct |
24 | Correct | 94 ms | 12152 KB | Output is correct |
25 | Correct | 105 ms | 12536 KB | Output is correct |
26 | Correct | 32 ms | 9344 KB | Output is correct |
27 | Correct | 30 ms | 9216 KB | Output is correct |
28 | Correct | 106 ms | 12420 KB | Output is correct |
29 | Correct | 19 ms | 6400 KB | Output is correct |
30 | Correct | 7 ms | 4864 KB | Output is correct |
31 | Correct | 16 ms | 5888 KB | Output is correct |
32 | Correct | 16 ms | 6016 KB | Output is correct |
33 | Correct | 46 ms | 10232 KB | Output is correct |
34 | Correct | 46 ms | 10232 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 4224 KB | Output is correct |
2 | Correct | 3 ms | 4096 KB | Output is correct |
3 | Correct | 3 ms | 4096 KB | Output is correct |
4 | Correct | 3 ms | 4224 KB | Output is correct |
5 | Correct | 3 ms | 4224 KB | Output is correct |
6 | Correct | 3 ms | 4224 KB | Output is correct |
7 | Correct | 3 ms | 4224 KB | Output is correct |
8 | Correct | 3 ms | 4352 KB | Output is correct |
9 | Correct | 5 ms | 4608 KB | Output is correct |
10 | Correct | 15 ms | 6016 KB | Output is correct |
11 | Correct | 48 ms | 10616 KB | Output is correct |
12 | Correct | 27 ms | 8448 KB | Output is correct |
13 | Correct | 55 ms | 9848 KB | Output is correct |
14 | Correct | 45 ms | 10360 KB | Output is correct |
15 | Correct | 44 ms | 10360 KB | Output is correct |
16 | Correct | 29 ms | 7800 KB | Output is correct |
17 | Correct | 84 ms | 11768 KB | Output is correct |
18 | Correct | 50 ms | 9208 KB | Output is correct |
19 | Correct | 29 ms | 7808 KB | Output is correct |
20 | Correct | 137 ms | 12536 KB | Output is correct |
21 | Correct | 47 ms | 9536 KB | Output is correct |
22 | Correct | 37 ms | 8320 KB | Output is correct |
23 | Correct | 49 ms | 9208 KB | Output is correct |
24 | Correct | 96 ms | 12152 KB | Output is correct |
25 | Correct | 114 ms | 12536 KB | Output is correct |
26 | Correct | 31 ms | 9336 KB | Output is correct |
27 | Correct | 30 ms | 9208 KB | Output is correct |
28 | Correct | 102 ms | 12408 KB | Output is correct |
29 | Correct | 18 ms | 6400 KB | Output is correct |
30 | Correct | 7 ms | 4864 KB | Output is correct |
31 | Correct | 16 ms | 5888 KB | Output is correct |
32 | Correct | 16 ms | 6016 KB | Output is correct |
33 | Correct | 44 ms | 10232 KB | Output is correct |
34 | Correct | 46 ms | 10232 KB | Output is correct |
35 | Correct | 976 ms | 87160 KB | Output is correct |
36 | Correct | 211 ms | 20936 KB | Output is correct |
37 | Correct | 780 ms | 66724 KB | Output is correct |
38 | Execution timed out | 1093 ms | 97912 KB | Time limit exceeded |
39 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 4224 KB | Output is correct |
2 | Correct | 3 ms | 4096 KB | Output is correct |
3 | Correct | 3 ms | 4096 KB | Output is correct |
4 | Correct | 2 ms | 4224 KB | Output is correct |
5 | Correct | 3 ms | 4224 KB | Output is correct |
6 | Correct | 3 ms | 4224 KB | Output is correct |
7 | Correct | 3 ms | 4224 KB | Output is correct |
8 | Correct | 3 ms | 4352 KB | Output is correct |
9 | Correct | 5 ms | 4608 KB | Output is correct |
10 | Correct | 16 ms | 6016 KB | Output is correct |
11 | Correct | 47 ms | 10616 KB | Output is correct |
12 | Correct | 29 ms | 8448 KB | Output is correct |
13 | Correct | 61 ms | 9860 KB | Output is correct |
14 | Correct | 44 ms | 10360 KB | Output is correct |
15 | Correct | 48 ms | 10360 KB | Output is correct |
16 | Correct | 32 ms | 7800 KB | Output is correct |
17 | Correct | 113 ms | 11768 KB | Output is correct |
18 | Correct | 65 ms | 9208 KB | Output is correct |
19 | Correct | 38 ms | 7828 KB | Output is correct |
20 | Correct | 166 ms | 12536 KB | Output is correct |
21 | Correct | 57 ms | 9464 KB | Output is correct |
22 | Correct | 36 ms | 8312 KB | Output is correct |
23 | Correct | 50 ms | 9208 KB | Output is correct |
24 | Correct | 109 ms | 12328 KB | Output is correct |
25 | Correct | 100 ms | 12536 KB | Output is correct |
26 | Correct | 31 ms | 9344 KB | Output is correct |
27 | Correct | 29 ms | 9216 KB | Output is correct |
28 | Correct | 99 ms | 12432 KB | Output is correct |
29 | Correct | 18 ms | 6400 KB | Output is correct |
30 | Correct | 8 ms | 4992 KB | Output is correct |
31 | Correct | 15 ms | 5888 KB | Output is correct |
32 | Correct | 15 ms | 6016 KB | Output is correct |
33 | Correct | 43 ms | 10232 KB | Output is correct |
34 | Correct | 44 ms | 10232 KB | Output is correct |
35 | Correct | 991 ms | 87160 KB | Output is correct |
36 | Correct | 211 ms | 20984 KB | Output is correct |
37 | Correct | 768 ms | 66768 KB | Output is correct |
38 | Execution timed out | 1098 ms | 100784 KB | Time limit exceeded |
39 | Halted | 0 ms | 0 KB | - |