# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
249234 | 2020-07-14T13:57:45 Z | hunni10 | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 1000 ms | 67064 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 1024 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 | 9 ms | 13440 KB | Output is correct |
2 | Correct | 8 ms | 13440 KB | Output is correct |
3 | Correct | 9 ms | 13440 KB | Output is correct |
4 | Correct | 9 ms | 13440 KB | Output is correct |
5 | Correct | 8 ms | 13440 KB | Output is correct |
6 | Correct | 9 ms | 13440 KB | Output is correct |
7 | Correct | 9 ms | 13440 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 13440 KB | Output is correct |
2 | Correct | 9 ms | 13440 KB | Output is correct |
3 | Correct | 9 ms | 13440 KB | Output is correct |
4 | Correct | 10 ms | 13440 KB | Output is correct |
5 | Correct | 9 ms | 13440 KB | Output is correct |
6 | Correct | 9 ms | 13440 KB | Output is correct |
7 | Correct | 10 ms | 13440 KB | Output is correct |
8 | Correct | 10 ms | 13824 KB | Output is correct |
9 | Correct | 14 ms | 14336 KB | Output is correct |
10 | Correct | 40 ms | 17272 KB | Output is correct |
11 | Correct | 131 ms | 26360 KB | Output is correct |
12 | Correct | 81 ms | 22008 KB | Output is correct |
13 | Correct | 120 ms | 24824 KB | Output is correct |
14 | Correct | 112 ms | 25592 KB | Output is correct |
15 | Correct | 125 ms | 25592 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 13440 KB | Output is correct |
2 | Correct | 8 ms | 13440 KB | Output is correct |
3 | Correct | 9 ms | 13440 KB | Output is correct |
4 | Correct | 9 ms | 13440 KB | Output is correct |
5 | Correct | 13 ms | 13440 KB | Output is correct |
6 | Correct | 9 ms | 13440 KB | Output is correct |
7 | Correct | 14 ms | 13448 KB | Output is correct |
8 | Correct | 11 ms | 13824 KB | Output is correct |
9 | Correct | 16 ms | 14336 KB | Output is correct |
10 | Correct | 46 ms | 17272 KB | Output is correct |
11 | Correct | 160 ms | 26232 KB | Output is correct |
12 | Correct | 86 ms | 22008 KB | Output is correct |
13 | Correct | 114 ms | 24696 KB | Output is correct |
14 | Correct | 117 ms | 25720 KB | Output is correct |
15 | Correct | 97 ms | 25596 KB | Output is correct |
16 | Correct | 81 ms | 21112 KB | Output is correct |
17 | Correct | 275 ms | 31600 KB | Output is correct |
18 | Correct | 186 ms | 27384 KB | Output is correct |
19 | Correct | 104 ms | 23288 KB | Output is correct |
20 | Correct | 421 ms | 33784 KB | Output is correct |
21 | Correct | 157 ms | 25336 KB | Output is correct |
22 | Correct | 132 ms | 24824 KB | Output is correct |
23 | Correct | 175 ms | 27004 KB | Output is correct |
24 | Correct | 356 ms | 33088 KB | Output is correct |
25 | Correct | 377 ms | 34040 KB | Output is correct |
26 | Correct | 96 ms | 24056 KB | Output is correct |
27 | Correct | 97 ms | 23544 KB | Output is correct |
28 | Correct | 398 ms | 33640 KB | Output is correct |
29 | Correct | 48 ms | 17784 KB | Output is correct |
30 | Correct | 19 ms | 14720 KB | Output is correct |
31 | Correct | 40 ms | 16760 KB | Output is correct |
32 | Correct | 41 ms | 17144 KB | Output is correct |
33 | Correct | 113 ms | 25464 KB | Output is correct |
34 | Correct | 109 ms | 25464 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 8 ms | 13440 KB | Output is correct |
2 | Correct | 11 ms | 13440 KB | Output is correct |
3 | Correct | 9 ms | 13440 KB | Output is correct |
4 | Correct | 9 ms | 13440 KB | Output is correct |
5 | Correct | 12 ms | 13440 KB | Output is correct |
6 | Correct | 13 ms | 13440 KB | Output is correct |
7 | Correct | 9 ms | 13440 KB | Output is correct |
8 | Correct | 12 ms | 13952 KB | Output is correct |
9 | Correct | 14 ms | 14336 KB | Output is correct |
10 | Correct | 45 ms | 17272 KB | Output is correct |
11 | Correct | 150 ms | 26232 KB | Output is correct |
12 | Correct | 83 ms | 22008 KB | Output is correct |
13 | Correct | 123 ms | 24696 KB | Output is correct |
14 | Correct | 108 ms | 25592 KB | Output is correct |
15 | Correct | 109 ms | 25592 KB | Output is correct |
16 | Correct | 82 ms | 21112 KB | Output is correct |
17 | Correct | 288 ms | 31700 KB | Output is correct |
18 | Correct | 181 ms | 27124 KB | Output is correct |
19 | Correct | 104 ms | 23292 KB | Output is correct |
20 | Correct | 424 ms | 33912 KB | Output is correct |
21 | Correct | 153 ms | 25336 KB | Output is correct |
22 | Correct | 133 ms | 24824 KB | Output is correct |
23 | Correct | 195 ms | 27128 KB | Output is correct |
24 | Correct | 345 ms | 33016 KB | Output is correct |
25 | Correct | 370 ms | 33912 KB | Output is correct |
26 | Correct | 88 ms | 24056 KB | Output is correct |
27 | Correct | 92 ms | 23544 KB | Output is correct |
28 | Correct | 381 ms | 33656 KB | Output is correct |
29 | Correct | 52 ms | 17784 KB | Output is correct |
30 | Correct | 19 ms | 14720 KB | Output is correct |
31 | Correct | 41 ms | 16760 KB | Output is correct |
32 | Correct | 39 ms | 17144 KB | Output is correct |
33 | Correct | 106 ms | 25464 KB | Output is correct |
34 | Correct | 98 ms | 25592 KB | Output is correct |
35 | Execution timed out | 1091 ms | 67064 KB | Time limit exceeded |
36 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 13440 KB | Output is correct |
2 | Correct | 9 ms | 13440 KB | Output is correct |
3 | Correct | 9 ms | 13440 KB | Output is correct |
4 | Correct | 9 ms | 13440 KB | Output is correct |
5 | Correct | 9 ms | 13440 KB | Output is correct |
6 | Correct | 9 ms | 13440 KB | Output is correct |
7 | Correct | 12 ms | 13440 KB | Output is correct |
8 | Correct | 11 ms | 13824 KB | Output is correct |
9 | Correct | 14 ms | 14336 KB | Output is correct |
10 | Correct | 40 ms | 17232 KB | Output is correct |
11 | Correct | 132 ms | 26232 KB | Output is correct |
12 | Correct | 85 ms | 22008 KB | Output is correct |
13 | Correct | 121 ms | 24824 KB | Output is correct |
14 | Correct | 97 ms | 25592 KB | Output is correct |
15 | Correct | 98 ms | 25596 KB | Output is correct |
16 | Correct | 85 ms | 21116 KB | Output is correct |
17 | Correct | 286 ms | 31736 KB | Output is correct |
18 | Correct | 181 ms | 27128 KB | Output is correct |
19 | Correct | 104 ms | 23288 KB | Output is correct |
20 | Correct | 439 ms | 33784 KB | Output is correct |
21 | Correct | 146 ms | 25336 KB | Output is correct |
22 | Correct | 131 ms | 24828 KB | Output is correct |
23 | Correct | 186 ms | 27000 KB | Output is correct |
24 | Correct | 344 ms | 33016 KB | Output is correct |
25 | Correct | 363 ms | 33912 KB | Output is correct |
26 | Correct | 98 ms | 24056 KB | Output is correct |
27 | Correct | 90 ms | 23544 KB | Output is correct |
28 | Correct | 377 ms | 33720 KB | Output is correct |
29 | Correct | 47 ms | 17784 KB | Output is correct |
30 | Correct | 20 ms | 14720 KB | Output is correct |
31 | Correct | 43 ms | 16760 KB | Output is correct |
32 | Correct | 41 ms | 17144 KB | Output is correct |
33 | Correct | 110 ms | 25464 KB | Output is correct |
34 | Correct | 117 ms | 25592 KB | Output is correct |
35 | Execution timed out | 1076 ms | 66532 KB | Time limit exceeded |
36 | Halted | 0 ms | 0 KB | - |