#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
using namespace std;
typedef long long ll;
const int INF = 1e9;
const int B = 300;
const int MAXN = 3e4;
vector<pair<int, int> > d;
int dist[MAXN][B];
vector<array<int, 3> > g[MAXN][B];
int main()
{
//ifstream cin("input.txt");
//ofstream cout("output.txt");
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, m;
cin >> n >> m;
d.resize(m);
vector<int> big;
for (int i = 0; i < m; i++)
{
cin >> d[i].first >> d[i].second;
if (d[i].second >= B)
{
big.push_back(i);
}
}
for (int i = 0; i < n; i++)
for (int j = 0; j < B; j++)
dist[i][j] = INF;
for (int i = 0; i < m; i++)
{
if (d[i].second >= B) continue;
g[d[i].first][0].push_back({d[i].first, d[i].second, 0});
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < B; j++)
{
if (i - j >= 0)
{
g[i][j].push_back({i - j, 0, 1});
g[i][j].push_back({i - j, j, 1});
}
if (i + j < n)
{
g[i][j].push_back({i + j, 0, 1});
g[i][j].push_back({i + j, j, 1});
}
}
}
for (auto& i : big)
{
for (int j = d[i].first, k = 0; j < n; j += d[i].second, k++)
{
g[d[i].first][0].push_back({j, 0, k});
}
for (int j = d[i].first, k = 0; j >= 0; j -= d[i].second, k++)
{
g[d[i].first][0].push_back({j, 0, k});
}
}
set<array<int, 3> > st;
st.insert({0, d[0].first, 0});
dist[d[0].first][0] = 0;
while (!st.empty())
{
auto [dst, pos, pw] = *st.begin();
st.erase(st.begin());
for (auto& [psu, pwu, w] : g[pos][pw])
{
if (dist[psu][pwu] > dst + w)
{
st.erase({dist[psu][pwu], psu, pwu});
dist[psu][pwu] = dst + w;
st.insert({dist[psu][pwu], psu, pwu});
}
}
}
int mn = INF;
for (int i = 0; i < B; i++)
mn = min(mn, dist[d[1].first][i]);
if (mn == INF)
cout << -1;
else
cout << mn;
return 0;
}
/*
small
(i, j) -1> (i - j, 0), (i + j, 0)
(i, 0) -0> (i, j)
(i, j) -1> (i - j, j), (i + j, j)
large
(i, 0) -1> (i + j, 0)
(i, 0) -1> (i - j, 0)
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
99 ms |
211560 KB |
Output is correct |
2 |
Correct |
98 ms |
211596 KB |
Output is correct |
3 |
Correct |
106 ms |
211752 KB |
Output is correct |
4 |
Correct |
98 ms |
211672 KB |
Output is correct |
5 |
Correct |
98 ms |
211660 KB |
Output is correct |
6 |
Correct |
104 ms |
211660 KB |
Output is correct |
7 |
Correct |
108 ms |
211676 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
98 ms |
211604 KB |
Output is correct |
2 |
Correct |
96 ms |
211564 KB |
Output is correct |
3 |
Correct |
102 ms |
211620 KB |
Output is correct |
4 |
Correct |
111 ms |
211672 KB |
Output is correct |
5 |
Correct |
98 ms |
211656 KB |
Output is correct |
6 |
Correct |
100 ms |
211724 KB |
Output is correct |
7 |
Correct |
106 ms |
211588 KB |
Output is correct |
8 |
Correct |
106 ms |
211748 KB |
Output is correct |
9 |
Correct |
99 ms |
211800 KB |
Output is correct |
10 |
Correct |
99 ms |
212008 KB |
Output is correct |
11 |
Correct |
100 ms |
212200 KB |
Output is correct |
12 |
Correct |
103 ms |
212140 KB |
Output is correct |
13 |
Correct |
110 ms |
212228 KB |
Output is correct |
14 |
Correct |
113 ms |
212276 KB |
Output is correct |
15 |
Correct |
101 ms |
212176 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
110 ms |
211572 KB |
Output is correct |
2 |
Correct |
103 ms |
211660 KB |
Output is correct |
3 |
Correct |
114 ms |
211664 KB |
Output is correct |
4 |
Correct |
99 ms |
211656 KB |
Output is correct |
5 |
Correct |
100 ms |
211660 KB |
Output is correct |
6 |
Correct |
97 ms |
211744 KB |
Output is correct |
7 |
Correct |
96 ms |
211616 KB |
Output is correct |
8 |
Correct |
102 ms |
211636 KB |
Output is correct |
9 |
Correct |
100 ms |
211792 KB |
Output is correct |
10 |
Correct |
108 ms |
212088 KB |
Output is correct |
11 |
Correct |
115 ms |
212272 KB |
Output is correct |
12 |
Correct |
97 ms |
212080 KB |
Output is correct |
13 |
Correct |
102 ms |
212064 KB |
Output is correct |
14 |
Correct |
98 ms |
212256 KB |
Output is correct |
15 |
Correct |
109 ms |
212176 KB |
Output is correct |
16 |
Correct |
121 ms |
213172 KB |
Output is correct |
17 |
Correct |
126 ms |
223820 KB |
Output is correct |
18 |
Correct |
156 ms |
243872 KB |
Output is correct |
19 |
Correct |
168 ms |
248776 KB |
Output is correct |
20 |
Correct |
164 ms |
248908 KB |
Output is correct |
21 |
Correct |
112 ms |
216780 KB |
Output is correct |
22 |
Correct |
167 ms |
244428 KB |
Output is correct |
23 |
Correct |
162 ms |
240844 KB |
Output is correct |
24 |
Correct |
172 ms |
246924 KB |
Output is correct |
25 |
Correct |
169 ms |
248916 KB |
Output is correct |
26 |
Correct |
170 ms |
248808 KB |
Output is correct |
27 |
Correct |
174 ms |
248780 KB |
Output is correct |
28 |
Correct |
173 ms |
248948 KB |
Output is correct |
29 |
Correct |
188 ms |
248796 KB |
Output is correct |
30 |
Correct |
168 ms |
248800 KB |
Output is correct |
31 |
Correct |
177 ms |
248780 KB |
Output is correct |
32 |
Correct |
167 ms |
248940 KB |
Output is correct |
33 |
Correct |
195 ms |
248936 KB |
Output is correct |
34 |
Correct |
195 ms |
249016 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
105 ms |
211684 KB |
Output is correct |
2 |
Correct |
97 ms |
211580 KB |
Output is correct |
3 |
Correct |
96 ms |
211628 KB |
Output is correct |
4 |
Correct |
105 ms |
211676 KB |
Output is correct |
5 |
Correct |
96 ms |
211668 KB |
Output is correct |
6 |
Correct |
103 ms |
211620 KB |
Output is correct |
7 |
Correct |
99 ms |
211620 KB |
Output is correct |
8 |
Correct |
99 ms |
211644 KB |
Output is correct |
9 |
Correct |
99 ms |
211816 KB |
Output is correct |
10 |
Correct |
102 ms |
212124 KB |
Output is correct |
11 |
Correct |
119 ms |
212180 KB |
Output is correct |
12 |
Correct |
102 ms |
212132 KB |
Output is correct |
13 |
Correct |
99 ms |
212044 KB |
Output is correct |
14 |
Correct |
101 ms |
212200 KB |
Output is correct |
15 |
Correct |
102 ms |
212224 KB |
Output is correct |
16 |
Correct |
114 ms |
213084 KB |
Output is correct |
17 |
Correct |
123 ms |
223776 KB |
Output is correct |
18 |
Correct |
157 ms |
243796 KB |
Output is correct |
19 |
Correct |
176 ms |
248828 KB |
Output is correct |
20 |
Correct |
174 ms |
248888 KB |
Output is correct |
21 |
Correct |
111 ms |
216912 KB |
Output is correct |
22 |
Correct |
153 ms |
244424 KB |
Output is correct |
23 |
Correct |
155 ms |
240848 KB |
Output is correct |
24 |
Correct |
171 ms |
247004 KB |
Output is correct |
25 |
Correct |
165 ms |
249012 KB |
Output is correct |
26 |
Correct |
171 ms |
248728 KB |
Output is correct |
27 |
Correct |
175 ms |
248904 KB |
Output is correct |
28 |
Correct |
174 ms |
248908 KB |
Output is correct |
29 |
Correct |
182 ms |
248960 KB |
Output is correct |
30 |
Correct |
174 ms |
248732 KB |
Output is correct |
31 |
Correct |
186 ms |
248884 KB |
Output is correct |
32 |
Correct |
169 ms |
248920 KB |
Output is correct |
33 |
Correct |
201 ms |
248936 KB |
Output is correct |
34 |
Correct |
233 ms |
248996 KB |
Output is correct |
35 |
Correct |
197 ms |
239480 KB |
Output is correct |
36 |
Correct |
138 ms |
230988 KB |
Output is correct |
37 |
Correct |
234 ms |
249780 KB |
Output is correct |
38 |
Correct |
246 ms |
251304 KB |
Output is correct |
39 |
Correct |
245 ms |
251436 KB |
Output is correct |
40 |
Correct |
225 ms |
251384 KB |
Output is correct |
41 |
Correct |
221 ms |
251440 KB |
Output is correct |
42 |
Correct |
175 ms |
249484 KB |
Output is correct |
43 |
Correct |
176 ms |
249532 KB |
Output is correct |
44 |
Correct |
168 ms |
249620 KB |
Output is correct |
45 |
Correct |
327 ms |
251660 KB |
Output is correct |
46 |
Correct |
311 ms |
251596 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
100 ms |
211664 KB |
Output is correct |
2 |
Correct |
103 ms |
211672 KB |
Output is correct |
3 |
Correct |
98 ms |
211576 KB |
Output is correct |
4 |
Correct |
99 ms |
211548 KB |
Output is correct |
5 |
Correct |
99 ms |
211660 KB |
Output is correct |
6 |
Correct |
106 ms |
211672 KB |
Output is correct |
7 |
Correct |
98 ms |
211660 KB |
Output is correct |
8 |
Correct |
97 ms |
211660 KB |
Output is correct |
9 |
Correct |
116 ms |
211728 KB |
Output is correct |
10 |
Correct |
115 ms |
212104 KB |
Output is correct |
11 |
Correct |
109 ms |
212164 KB |
Output is correct |
12 |
Correct |
99 ms |
212144 KB |
Output is correct |
13 |
Correct |
100 ms |
212032 KB |
Output is correct |
14 |
Correct |
103 ms |
212172 KB |
Output is correct |
15 |
Correct |
101 ms |
212208 KB |
Output is correct |
16 |
Correct |
102 ms |
213300 KB |
Output is correct |
17 |
Correct |
126 ms |
223868 KB |
Output is correct |
18 |
Correct |
164 ms |
243716 KB |
Output is correct |
19 |
Correct |
164 ms |
248732 KB |
Output is correct |
20 |
Correct |
165 ms |
248840 KB |
Output is correct |
21 |
Correct |
108 ms |
216692 KB |
Output is correct |
22 |
Correct |
162 ms |
244528 KB |
Output is correct |
23 |
Correct |
152 ms |
240884 KB |
Output is correct |
24 |
Correct |
170 ms |
246888 KB |
Output is correct |
25 |
Correct |
169 ms |
249040 KB |
Output is correct |
26 |
Correct |
164 ms |
248840 KB |
Output is correct |
27 |
Correct |
172 ms |
248944 KB |
Output is correct |
28 |
Correct |
175 ms |
248964 KB |
Output is correct |
29 |
Correct |
190 ms |
248872 KB |
Output is correct |
30 |
Correct |
170 ms |
248800 KB |
Output is correct |
31 |
Correct |
176 ms |
248804 KB |
Output is correct |
32 |
Correct |
180 ms |
248992 KB |
Output is correct |
33 |
Correct |
197 ms |
248840 KB |
Output is correct |
34 |
Correct |
214 ms |
248964 KB |
Output is correct |
35 |
Correct |
188 ms |
239616 KB |
Output is correct |
36 |
Correct |
141 ms |
230944 KB |
Output is correct |
37 |
Correct |
227 ms |
249804 KB |
Output is correct |
38 |
Correct |
224 ms |
251348 KB |
Output is correct |
39 |
Correct |
224 ms |
251468 KB |
Output is correct |
40 |
Correct |
220 ms |
251500 KB |
Output is correct |
41 |
Correct |
237 ms |
251496 KB |
Output is correct |
42 |
Correct |
176 ms |
249544 KB |
Output is correct |
43 |
Correct |
171 ms |
249476 KB |
Output is correct |
44 |
Correct |
169 ms |
249648 KB |
Output is correct |
45 |
Correct |
334 ms |
251528 KB |
Output is correct |
46 |
Correct |
323 ms |
251640 KB |
Output is correct |
47 |
Runtime error |
172 ms |
262144 KB |
Execution killed with signal 9 |
48 |
Halted |
0 ms |
0 KB |
- |