#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INT_MAX LLONG_MAX
const int MAX_N = 30000;
const int C = 300;
vector<pair<int, int>> G[MAX_N * C];
int B[MAX_N], P[MAX_N];
int D[MAX_N * C];
void connect(int u, int v, int w, bool directed = false) {
G[u].push_back({v, w});
if (!directed) {
G[v].push_back({u, w});
}
}
int32_t main() {
cin.tie(nullptr)->sync_with_stdio(false);
int N, M;
cin >> N >> M;
for (int i = 0; i < M; i++) {
cin >> B[i] >> P[i];
if (P[i] >= C) {
for (int j = B[i] % P[i]; j < N; j += P[i]) {
connect(B[i], j, abs(j - B[i]) / P[i], true);
}
} else {
connect(B[i], B[i] + P[i] * N, 0, true);
}
}
for (int i = 0; i < N; i++) {
for (int power = 1; power < C; power++) {
if (i - power >= 0) {
connect(i + power * N, i + power * (N - 1), 1, true);
connect(i + power * N, i - power, 1, true);
}
if (i + power < N) {
connect(i + power * N, i + power * (N + 1), 1, true);
connect(i + power * N, i + power, 1, true);
}
}
}
fill(D, D + MAX_N, INT_MAX);
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> Q;
Q.push({D[B[0]] = 0, B[0]});
while (!Q.empty()) {
auto [d, u] = Q.top();
Q.pop();
if (d > D[u]) {
continue;
}
for (auto [v, w] : G[u]) {
if (D[u] + w < D[v]) {
Q.push({D[v] = D[u] + w, v});
}
}
}
cout << (D[B[1]] == INT_MAX ? -1 : D[B[1]]) << "\n";
}
Compilation message
skyscraper.cpp:4: warning: "INT_MAX" redefined
4 | #define INT_MAX LLONG_MAX
|
In file included from /usr/include/c++/10/climits:42,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:39,
from skyscraper.cpp:1:
/usr/lib/gcc/x86_64-linux-gnu/10/include/limits.h:120: note: this is the location of the previous definition
120 | #define INT_MAX __INT_MAX__
|
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
84 ms |
211788 KB |
Output is correct |
2 |
Correct |
83 ms |
211812 KB |
Output is correct |
3 |
Correct |
82 ms |
211900 KB |
Output is correct |
4 |
Correct |
84 ms |
211844 KB |
Output is correct |
5 |
Correct |
85 ms |
211868 KB |
Output is correct |
6 |
Correct |
82 ms |
211788 KB |
Output is correct |
7 |
Correct |
82 ms |
211788 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
85 ms |
211788 KB |
Output is correct |
2 |
Correct |
83 ms |
211788 KB |
Output is correct |
3 |
Correct |
83 ms |
211788 KB |
Output is correct |
4 |
Correct |
83 ms |
211788 KB |
Output is correct |
5 |
Correct |
83 ms |
211792 KB |
Output is correct |
6 |
Correct |
85 ms |
211916 KB |
Output is correct |
7 |
Correct |
83 ms |
211788 KB |
Output is correct |
8 |
Correct |
83 ms |
211928 KB |
Output is correct |
9 |
Correct |
96 ms |
212044 KB |
Output is correct |
10 |
Correct |
84 ms |
212360 KB |
Output is correct |
11 |
Correct |
84 ms |
212428 KB |
Output is correct |
12 |
Correct |
84 ms |
212300 KB |
Output is correct |
13 |
Correct |
88 ms |
212372 KB |
Output is correct |
14 |
Correct |
86 ms |
212428 KB |
Output is correct |
15 |
Correct |
84 ms |
212388 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
82 ms |
211900 KB |
Output is correct |
2 |
Correct |
83 ms |
211836 KB |
Output is correct |
3 |
Correct |
87 ms |
211788 KB |
Output is correct |
4 |
Correct |
82 ms |
212004 KB |
Output is correct |
5 |
Correct |
83 ms |
211872 KB |
Output is correct |
6 |
Correct |
83 ms |
211888 KB |
Output is correct |
7 |
Correct |
87 ms |
211864 KB |
Output is correct |
8 |
Correct |
84 ms |
211916 KB |
Output is correct |
9 |
Correct |
84 ms |
212044 KB |
Output is correct |
10 |
Correct |
84 ms |
212364 KB |
Output is correct |
11 |
Correct |
84 ms |
212436 KB |
Output is correct |
12 |
Correct |
84 ms |
212300 KB |
Output is correct |
13 |
Correct |
84 ms |
212464 KB |
Output is correct |
14 |
Correct |
84 ms |
212428 KB |
Output is correct |
15 |
Correct |
86 ms |
212592 KB |
Output is correct |
16 |
Correct |
87 ms |
213552 KB |
Output is correct |
17 |
Incorrect |
111 ms |
226508 KB |
Output isn't correct |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
84 ms |
211852 KB |
Output is correct |
2 |
Correct |
83 ms |
211844 KB |
Output is correct |
3 |
Correct |
81 ms |
211848 KB |
Output is correct |
4 |
Correct |
83 ms |
211900 KB |
Output is correct |
5 |
Correct |
85 ms |
211812 KB |
Output is correct |
6 |
Correct |
85 ms |
211864 KB |
Output is correct |
7 |
Correct |
86 ms |
211920 KB |
Output is correct |
8 |
Correct |
83 ms |
211916 KB |
Output is correct |
9 |
Correct |
85 ms |
212040 KB |
Output is correct |
10 |
Correct |
87 ms |
212276 KB |
Output is correct |
11 |
Correct |
84 ms |
212428 KB |
Output is correct |
12 |
Correct |
84 ms |
212300 KB |
Output is correct |
13 |
Correct |
97 ms |
212300 KB |
Output is correct |
14 |
Correct |
87 ms |
212424 KB |
Output is correct |
15 |
Correct |
85 ms |
212392 KB |
Output is correct |
16 |
Correct |
87 ms |
213556 KB |
Output is correct |
17 |
Incorrect |
113 ms |
226548 KB |
Output isn't correct |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
83 ms |
211788 KB |
Output is correct |
2 |
Correct |
87 ms |
211964 KB |
Output is correct |
3 |
Correct |
82 ms |
211784 KB |
Output is correct |
4 |
Correct |
83 ms |
211788 KB |
Output is correct |
5 |
Correct |
82 ms |
211840 KB |
Output is correct |
6 |
Correct |
83 ms |
211876 KB |
Output is correct |
7 |
Correct |
85 ms |
211836 KB |
Output is correct |
8 |
Correct |
82 ms |
211912 KB |
Output is correct |
9 |
Correct |
83 ms |
212044 KB |
Output is correct |
10 |
Correct |
87 ms |
212276 KB |
Output is correct |
11 |
Correct |
83 ms |
212392 KB |
Output is correct |
12 |
Correct |
97 ms |
212276 KB |
Output is correct |
13 |
Correct |
84 ms |
212300 KB |
Output is correct |
14 |
Correct |
84 ms |
212428 KB |
Output is correct |
15 |
Correct |
84 ms |
212356 KB |
Output is correct |
16 |
Correct |
89 ms |
213644 KB |
Output is correct |
17 |
Incorrect |
111 ms |
226508 KB |
Output isn't correct |
18 |
Halted |
0 ms |
0 KB |
- |