# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
249268 | 2020-07-14T14:39:04 Z | hunni10 | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 1000 ms | 25668 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 128 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[v]) { sorted.erase({ shortest[v], v }); } shortest[v] = times; sorted.insert({ shortest[v], v }); inSorted[v] = true; } } } else { 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[v]) { 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 | 1 ms | 1280 KB | Output is correct |
2 | Correct | 1 ms | 1280 KB | Output is correct |
3 | Correct | 1 ms | 1280 KB | Output is correct |
4 | Correct | 1 ms | 1280 KB | Output is correct |
5 | Correct | 1 ms | 1280 KB | Output is correct |
6 | Correct | 1 ms | 1280 KB | Output is correct |
7 | Correct | 1 ms | 1280 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 1280 KB | Output is correct |
2 | Correct | 1 ms | 1280 KB | Output is correct |
3 | Correct | 1 ms | 1280 KB | Output is correct |
4 | Correct | 1 ms | 1280 KB | Output is correct |
5 | Correct | 1 ms | 1280 KB | Output is correct |
6 | Correct | 1 ms | 1280 KB | Output is correct |
7 | Correct | 1 ms | 1280 KB | Output is correct |
8 | Correct | 1 ms | 1280 KB | Output is correct |
9 | Correct | 1 ms | 1280 KB | Output is correct |
10 | Correct | 4 ms | 1664 KB | Output is correct |
11 | Correct | 10 ms | 2816 KB | Output is correct |
12 | Correct | 5 ms | 2432 KB | Output is correct |
13 | Correct | 19 ms | 2688 KB | Output is correct |
14 | Correct | 11 ms | 2816 KB | Output is correct |
15 | Correct | 12 ms | 2816 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 1280 KB | Output is correct |
2 | Correct | 1 ms | 1280 KB | Output is correct |
3 | Correct | 1 ms | 1280 KB | Output is correct |
4 | Correct | 1 ms | 1280 KB | Output is correct |
5 | Correct | 1 ms | 1280 KB | Output is correct |
6 | Correct | 1 ms | 1280 KB | Output is correct |
7 | Correct | 1 ms | 1280 KB | Output is correct |
8 | Correct | 1 ms | 1280 KB | Output is correct |
9 | Correct | 1 ms | 1280 KB | Output is correct |
10 | Correct | 4 ms | 1664 KB | Output is correct |
11 | Correct | 10 ms | 2944 KB | Output is correct |
12 | Correct | 6 ms | 2432 KB | Output is correct |
13 | Correct | 19 ms | 2688 KB | Output is correct |
14 | Correct | 11 ms | 2816 KB | Output is correct |
15 | Correct | 11 ms | 2816 KB | Output is correct |
16 | Correct | 6 ms | 2048 KB | Output is correct |
17 | Correct | 12 ms | 2816 KB | Output is correct |
18 | Correct | 9 ms | 2176 KB | Output is correct |
19 | Correct | 5 ms | 1792 KB | Output is correct |
20 | Correct | 28 ms | 3072 KB | Output is correct |
21 | Correct | 8 ms | 2304 KB | Output is correct |
22 | Correct | 8 ms | 2048 KB | Output is correct |
23 | Correct | 7 ms | 2176 KB | Output is correct |
24 | Correct | 12 ms | 2944 KB | Output is correct |
25 | Correct | 11 ms | 2944 KB | Output is correct |
26 | Correct | 7 ms | 2560 KB | Output is correct |
27 | Correct | 9 ms | 2560 KB | Output is correct |
28 | Correct | 12 ms | 3072 KB | Output is correct |
29 | Correct | 5 ms | 1792 KB | Output is correct |
30 | Correct | 2 ms | 1408 KB | Output is correct |
31 | Correct | 4 ms | 1664 KB | Output is correct |
32 | Correct | 3 ms | 1664 KB | Output is correct |
33 | Correct | 11 ms | 2816 KB | Output is correct |
34 | Correct | 11 ms | 2816 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 1280 KB | Output is correct |
2 | Correct | 1 ms | 1280 KB | Output is correct |
3 | Correct | 1 ms | 1280 KB | Output is correct |
4 | Correct | 1 ms | 1280 KB | Output is correct |
5 | Correct | 1 ms | 1280 KB | Output is correct |
6 | Correct | 1 ms | 1280 KB | Output is correct |
7 | Correct | 1 ms | 1280 KB | Output is correct |
8 | Correct | 1 ms | 1280 KB | Output is correct |
9 | Correct | 1 ms | 1280 KB | Output is correct |
10 | Correct | 4 ms | 1664 KB | Output is correct |
11 | Correct | 10 ms | 2816 KB | Output is correct |
12 | Correct | 6 ms | 2432 KB | Output is correct |
13 | Correct | 20 ms | 2688 KB | Output is correct |
14 | Correct | 11 ms | 2816 KB | Output is correct |
15 | Correct | 11 ms | 2816 KB | Output is correct |
16 | Correct | 6 ms | 2048 KB | Output is correct |
17 | Correct | 14 ms | 2816 KB | Output is correct |
18 | Correct | 7 ms | 2176 KB | Output is correct |
19 | Correct | 5 ms | 1792 KB | Output is correct |
20 | Correct | 29 ms | 3072 KB | Output is correct |
21 | Correct | 8 ms | 2304 KB | Output is correct |
22 | Correct | 6 ms | 1920 KB | Output is correct |
23 | Correct | 7 ms | 2176 KB | Output is correct |
24 | Correct | 13 ms | 2944 KB | Output is correct |
25 | Correct | 12 ms | 2944 KB | Output is correct |
26 | Correct | 7 ms | 2560 KB | Output is correct |
27 | Correct | 8 ms | 2560 KB | Output is correct |
28 | Correct | 14 ms | 3072 KB | Output is correct |
29 | Correct | 5 ms | 1792 KB | Output is correct |
30 | Correct | 2 ms | 1408 KB | Output is correct |
31 | Correct | 4 ms | 1664 KB | Output is correct |
32 | Correct | 4 ms | 1664 KB | Output is correct |
33 | Correct | 11 ms | 2816 KB | Output is correct |
34 | Correct | 11 ms | 2816 KB | Output is correct |
35 | Correct | 153 ms | 21868 KB | Output is correct |
36 | Correct | 25 ms | 5244 KB | Output is correct |
37 | Correct | 105 ms | 17056 KB | Output is correct |
38 | Correct | 175 ms | 25592 KB | Output is correct |
39 | Correct | 120 ms | 25636 KB | Output is correct |
40 | Correct | 132 ms | 25464 KB | Output is correct |
41 | Correct | 161 ms | 25628 KB | Output is correct |
42 | Correct | 76 ms | 18036 KB | Output is correct |
43 | Correct | 80 ms | 19192 KB | Output is correct |
44 | Execution timed out | 1093 ms | 20056 KB | Time limit exceeded |
45 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 1280 KB | Output is correct |
2 | Correct | 1 ms | 1280 KB | Output is correct |
3 | Correct | 1 ms | 1280 KB | Output is correct |
4 | Correct | 1 ms | 1280 KB | Output is correct |
5 | Correct | 1 ms | 1280 KB | Output is correct |
6 | Correct | 1 ms | 1280 KB | Output is correct |
7 | Correct | 1 ms | 1280 KB | Output is correct |
8 | Correct | 1 ms | 1280 KB | Output is correct |
9 | Correct | 1 ms | 1280 KB | Output is correct |
10 | Correct | 4 ms | 1664 KB | Output is correct |
11 | Correct | 10 ms | 2816 KB | Output is correct |
12 | Correct | 6 ms | 2432 KB | Output is correct |
13 | Correct | 19 ms | 2688 KB | Output is correct |
14 | Correct | 14 ms | 2944 KB | Output is correct |
15 | Correct | 12 ms | 2816 KB | Output is correct |
16 | Correct | 6 ms | 2048 KB | Output is correct |
17 | Correct | 12 ms | 2816 KB | Output is correct |
18 | Correct | 7 ms | 2176 KB | Output is correct |
19 | Correct | 5 ms | 1792 KB | Output is correct |
20 | Correct | 28 ms | 3072 KB | Output is correct |
21 | Correct | 8 ms | 2304 KB | Output is correct |
22 | Correct | 6 ms | 1920 KB | Output is correct |
23 | Correct | 8 ms | 2176 KB | Output is correct |
24 | Correct | 13 ms | 2944 KB | Output is correct |
25 | Correct | 16 ms | 2944 KB | Output is correct |
26 | Correct | 7 ms | 2560 KB | Output is correct |
27 | Correct | 7 ms | 2560 KB | Output is correct |
28 | Correct | 12 ms | 3072 KB | Output is correct |
29 | Correct | 4 ms | 1792 KB | Output is correct |
30 | Correct | 2 ms | 1408 KB | Output is correct |
31 | Correct | 4 ms | 1664 KB | Output is correct |
32 | Correct | 4 ms | 1664 KB | Output is correct |
33 | Correct | 11 ms | 2816 KB | Output is correct |
34 | Correct | 11 ms | 2816 KB | Output is correct |
35 | Correct | 137 ms | 21884 KB | Output is correct |
36 | Correct | 24 ms | 5240 KB | Output is correct |
37 | Correct | 103 ms | 17016 KB | Output is correct |
38 | Correct | 172 ms | 25592 KB | Output is correct |
39 | Correct | 123 ms | 25668 KB | Output is correct |
40 | Correct | 128 ms | 25464 KB | Output is correct |
41 | Correct | 162 ms | 25512 KB | Output is correct |
42 | Correct | 75 ms | 18036 KB | Output is correct |
43 | Correct | 81 ms | 19192 KB | Output is correct |
44 | Execution timed out | 1095 ms | 19960 KB | Time limit exceeded |
45 | Halted | 0 ms | 0 KB | - |