//https://oj.uz/problem/view/APIO15_skyscraper
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define st first
#define nd second
#define pii pair<int,int>
int n,m;
int root;
//position / power
struct E{
int pos;
int pow;
int waga;
};
struct Node{
int d;
int pos;
int pow;
};
class comp{
public:
bool operator()(Node A,Node B){
return A.d<B.d;
}
};
vector<E> edges[30009][174];
int dis[30009][174];
void build(){
for(int i=0;i<n;i++){
for(int j=1;j<=root;j++){
edges[i][j].pb({i,0,0});
}
}
}
void addsmaller(int pos,int pow){
int pos2 = pos;
while(pos2+pow<n){
edges[pos2][pow].pb({pos2+pow,pow,1});
pos2 += pow;
}
pos2 = pos;
while(pos2-pow>=0){
edges[pos2][pow].pb({pos2-pow,pow,1});
pos2 -= pow;
}
}
void addbigger(int pos,int pow){
int pos2 = pos;
int dl = 1;
while(pos2+pow<n){
edges[pos][0].pb({pos2+pow,0,dl});
pos2 += pow;
dl++;
}
pos2 = pos;
dl = 1;
while(pos2-pow>=0){
edges[pos][0].pb({pos2-pow,0,dl});
pos2 -= pow;
dl++;
}
}
void dijkstra(int pocz){
priority_queue<Node,vector<Node>,comp> q;
q.push({0,pocz,0});
while(!q.empty()){
auto t = q.top();
q.pop();
t.d = -t.d;
if(dis[t.pos][t.pow] != t.d)
continue;
for(auto x:edges[t.pos][t.pow]){
if(t.d + x.waga < dis[x.pos][x.pow]){
dis[x.pos][x.pow] = t.d + x.waga;
q.push({-dis[x.pos][x.pow],x.pos,x.pow});
}
}
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>m;
root = (int)sqrt(n);
build();
int zero,one;
for(int i=0;i<m;i++){
int pos,pow;
cin>>pos>>pow;
if(pow <= root){
edges[pos][0].pb({pos,pow,0});
addsmaller(pos,pow);
} else if(pow<=n){
addbigger(pos,pow);
}
if(i>1) continue;
if(i == 0){
zero = pos;
} else if(i == 1){
one = pos;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<=root;j++){
dis[i][j] = 1000000000;
}
}
dis[zero][0] = 0;
dijkstra(zero);
/*for(int i=0;i<n;i++){
for(int j=0;j<=n;j++){
cout<<"pos: "<<i<<" pow: "<<j<<endl;
for(auto x:edges[i][j]){
cout<<"pos: "<<x.pos<<" pow: "<<x.pow<<" waga: "<<x.waga<<endl;
}
}
}*/
if(dis[one][0] == 1000000000){
cout<<"-1\n";
} else cout<<dis[one][0]<<endl;
return 0;
}
Compilation message
skyscraper.cpp: In function 'int main()':
skyscraper.cpp:119:18: warning: 'one' may be used uninitialized in this function [-Wmaybe-uninitialized]
119 | if(dis[one][0] == 1000000000){
| ~~~~~~~~~~^
skyscraper.cpp:110:13: warning: 'zero' may be used uninitialized in this function [-Wmaybe-uninitialized]
110 | dijkstra(zero);
| ~~~~~~~~^~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
50 ms |
122828 KB |
Output is correct |
2 |
Correct |
52 ms |
122888 KB |
Output is correct |
3 |
Correct |
51 ms |
122896 KB |
Output is correct |
4 |
Correct |
56 ms |
122888 KB |
Output is correct |
5 |
Correct |
53 ms |
122824 KB |
Output is correct |
6 |
Correct |
58 ms |
122864 KB |
Output is correct |
7 |
Correct |
53 ms |
122928 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
51 ms |
122820 KB |
Output is correct |
2 |
Correct |
50 ms |
122832 KB |
Output is correct |
3 |
Correct |
58 ms |
122824 KB |
Output is correct |
4 |
Correct |
68 ms |
122932 KB |
Output is correct |
5 |
Correct |
60 ms |
122916 KB |
Output is correct |
6 |
Correct |
54 ms |
122828 KB |
Output is correct |
7 |
Correct |
57 ms |
122932 KB |
Output is correct |
8 |
Correct |
56 ms |
123016 KB |
Output is correct |
9 |
Correct |
55 ms |
122908 KB |
Output is correct |
10 |
Correct |
54 ms |
122964 KB |
Output is correct |
11 |
Correct |
53 ms |
123096 KB |
Output is correct |
12 |
Correct |
67 ms |
125484 KB |
Output is correct |
13 |
Correct |
69 ms |
125600 KB |
Output is correct |
14 |
Correct |
56 ms |
123060 KB |
Output is correct |
15 |
Correct |
55 ms |
123096 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
69 ms |
122892 KB |
Output is correct |
2 |
Correct |
54 ms |
122812 KB |
Output is correct |
3 |
Correct |
69 ms |
122916 KB |
Output is correct |
4 |
Correct |
55 ms |
122932 KB |
Output is correct |
5 |
Correct |
53 ms |
122928 KB |
Output is correct |
6 |
Correct |
56 ms |
122892 KB |
Output is correct |
7 |
Correct |
60 ms |
122848 KB |
Output is correct |
8 |
Correct |
66 ms |
122888 KB |
Output is correct |
9 |
Correct |
52 ms |
122884 KB |
Output is correct |
10 |
Correct |
51 ms |
122940 KB |
Output is correct |
11 |
Correct |
53 ms |
123192 KB |
Output is correct |
12 |
Correct |
61 ms |
125512 KB |
Output is correct |
13 |
Correct |
62 ms |
125496 KB |
Output is correct |
14 |
Correct |
53 ms |
123128 KB |
Output is correct |
15 |
Correct |
51 ms |
123124 KB |
Output is correct |
16 |
Correct |
51 ms |
123192 KB |
Output is correct |
17 |
Correct |
54 ms |
124308 KB |
Output is correct |
18 |
Correct |
54 ms |
126412 KB |
Output is correct |
19 |
Correct |
64 ms |
127084 KB |
Output is correct |
20 |
Correct |
142 ms |
176996 KB |
Output is correct |
21 |
Correct |
61 ms |
123456 KB |
Output is correct |
22 |
Correct |
69 ms |
126528 KB |
Output is correct |
23 |
Correct |
57 ms |
126032 KB |
Output is correct |
24 |
Correct |
59 ms |
126920 KB |
Output is correct |
25 |
Correct |
58 ms |
127180 KB |
Output is correct |
26 |
Correct |
133 ms |
175568 KB |
Output is correct |
27 |
Correct |
139 ms |
175164 KB |
Output is correct |
28 |
Correct |
59 ms |
127100 KB |
Output is correct |
29 |
Correct |
73 ms |
127156 KB |
Output is correct |
30 |
Correct |
59 ms |
127172 KB |
Output is correct |
31 |
Correct |
61 ms |
127204 KB |
Output is correct |
32 |
Correct |
59 ms |
127416 KB |
Output is correct |
33 |
Correct |
70 ms |
128052 KB |
Output is correct |
34 |
Correct |
72 ms |
128052 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
59 ms |
122928 KB |
Output is correct |
2 |
Correct |
54 ms |
122828 KB |
Output is correct |
3 |
Correct |
53 ms |
122932 KB |
Output is correct |
4 |
Correct |
53 ms |
122844 KB |
Output is correct |
5 |
Correct |
68 ms |
122924 KB |
Output is correct |
6 |
Correct |
53 ms |
122908 KB |
Output is correct |
7 |
Correct |
68 ms |
122920 KB |
Output is correct |
8 |
Correct |
53 ms |
122908 KB |
Output is correct |
9 |
Correct |
51 ms |
122960 KB |
Output is correct |
10 |
Correct |
53 ms |
123048 KB |
Output is correct |
11 |
Correct |
69 ms |
123212 KB |
Output is correct |
12 |
Correct |
53 ms |
125492 KB |
Output is correct |
13 |
Correct |
54 ms |
125524 KB |
Output is correct |
14 |
Correct |
57 ms |
123040 KB |
Output is correct |
15 |
Correct |
54 ms |
123072 KB |
Output is correct |
16 |
Correct |
58 ms |
123180 KB |
Output is correct |
17 |
Correct |
61 ms |
124276 KB |
Output is correct |
18 |
Correct |
59 ms |
126372 KB |
Output is correct |
19 |
Correct |
67 ms |
126960 KB |
Output is correct |
20 |
Correct |
143 ms |
176996 KB |
Output is correct |
21 |
Correct |
56 ms |
123388 KB |
Output is correct |
22 |
Correct |
59 ms |
126532 KB |
Output is correct |
23 |
Correct |
59 ms |
126028 KB |
Output is correct |
24 |
Correct |
60 ms |
126856 KB |
Output is correct |
25 |
Correct |
58 ms |
127180 KB |
Output is correct |
26 |
Correct |
155 ms |
175636 KB |
Output is correct |
27 |
Correct |
135 ms |
175260 KB |
Output is correct |
28 |
Correct |
59 ms |
127128 KB |
Output is correct |
29 |
Correct |
64 ms |
127152 KB |
Output is correct |
30 |
Correct |
77 ms |
127148 KB |
Output is correct |
31 |
Correct |
83 ms |
127196 KB |
Output is correct |
32 |
Correct |
70 ms |
127408 KB |
Output is correct |
33 |
Correct |
70 ms |
127936 KB |
Output is correct |
34 |
Correct |
92 ms |
127956 KB |
Output is correct |
35 |
Correct |
68 ms |
127816 KB |
Output is correct |
36 |
Correct |
58 ms |
125028 KB |
Output is correct |
37 |
Correct |
88 ms |
131664 KB |
Output is correct |
38 |
Correct |
80 ms |
130764 KB |
Output is correct |
39 |
Correct |
80 ms |
131148 KB |
Output is correct |
40 |
Correct |
77 ms |
130844 KB |
Output is correct |
41 |
Correct |
76 ms |
130828 KB |
Output is correct |
42 |
Runtime error |
238 ms |
262144 KB |
Execution killed with signal 9 |
43 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
58 ms |
122812 KB |
Output is correct |
2 |
Correct |
69 ms |
122932 KB |
Output is correct |
3 |
Correct |
53 ms |
122832 KB |
Output is correct |
4 |
Correct |
54 ms |
122924 KB |
Output is correct |
5 |
Correct |
57 ms |
122932 KB |
Output is correct |
6 |
Correct |
63 ms |
122916 KB |
Output is correct |
7 |
Correct |
56 ms |
122864 KB |
Output is correct |
8 |
Correct |
55 ms |
122896 KB |
Output is correct |
9 |
Correct |
53 ms |
122944 KB |
Output is correct |
10 |
Correct |
70 ms |
122940 KB |
Output is correct |
11 |
Correct |
53 ms |
123216 KB |
Output is correct |
12 |
Correct |
72 ms |
125556 KB |
Output is correct |
13 |
Correct |
55 ms |
125608 KB |
Output is correct |
14 |
Correct |
59 ms |
123088 KB |
Output is correct |
15 |
Correct |
59 ms |
123132 KB |
Output is correct |
16 |
Correct |
56 ms |
123212 KB |
Output is correct |
17 |
Correct |
59 ms |
124332 KB |
Output is correct |
18 |
Correct |
62 ms |
126396 KB |
Output is correct |
19 |
Correct |
61 ms |
127016 KB |
Output is correct |
20 |
Correct |
152 ms |
177000 KB |
Output is correct |
21 |
Correct |
58 ms |
123376 KB |
Output is correct |
22 |
Correct |
62 ms |
126416 KB |
Output is correct |
23 |
Correct |
67 ms |
126020 KB |
Output is correct |
24 |
Correct |
64 ms |
126856 KB |
Output is correct |
25 |
Correct |
61 ms |
127156 KB |
Output is correct |
26 |
Correct |
146 ms |
175600 KB |
Output is correct |
27 |
Correct |
140 ms |
175204 KB |
Output is correct |
28 |
Correct |
62 ms |
127180 KB |
Output is correct |
29 |
Correct |
72 ms |
127216 KB |
Output is correct |
30 |
Correct |
64 ms |
127076 KB |
Output is correct |
31 |
Correct |
66 ms |
127180 KB |
Output is correct |
32 |
Correct |
64 ms |
127308 KB |
Output is correct |
33 |
Correct |
70 ms |
128016 KB |
Output is correct |
34 |
Correct |
78 ms |
128044 KB |
Output is correct |
35 |
Correct |
73 ms |
127896 KB |
Output is correct |
36 |
Correct |
63 ms |
125016 KB |
Output is correct |
37 |
Correct |
94 ms |
131720 KB |
Output is correct |
38 |
Correct |
86 ms |
130764 KB |
Output is correct |
39 |
Correct |
85 ms |
131264 KB |
Output is correct |
40 |
Correct |
85 ms |
130764 KB |
Output is correct |
41 |
Correct |
85 ms |
130844 KB |
Output is correct |
42 |
Runtime error |
248 ms |
262144 KB |
Execution killed with signal 9 |
43 |
Halted |
0 ms |
0 KB |
- |