//#include "books.h"
#include<bits/stdc++.h>
using namespace std;
const int INF=1e9+7;
long long minimum_walk(vector<int> p, int s) {
int n=p.size();
long long ans=0;
vector<bool> vis(n, false);
vector<pair<int,int> > ranges;
vector<bool> ends(n);
vector<bool> starts(n);
vector<int> cycle(n);
for(int i=0; i<n; i++){
if(vis[i]) continue;
int v=i;
int l=i;
int r=i;
while(!vis[v]){
vis[v]=true;
cycle[v] = i;
l=min(l, v);
r=max(r, v);
ans += abs(p[v]-v);
v=p[v];
}
ends[r] = true;
starts[l] = true;
}
//start:
set<int> free;
for(int i=0; i<n; i++){
if(p[i]!=i || i==s){
free.insert(i);
}
}
int l=s; int r=s;
vector<int> queue; queue.push_back(s);
vis.assign(n, false);
while(!free.empty()){
if(!queue.empty()){
int cur=queue.back();
queue.pop_back();
while(!vis[cur]){
vis[cur]=true;
free.erase(cur);
l=min(l, cur);
r=max(r, cur);
cur = p[cur];
}
vector<int> neu;
auto it=free.upper_bound(l);
while(it!=free.end() && *it<r){
neu.push_back(*it);
it=next(it);
}
for(auto e: neu){
queue.push_back(e);
free.erase(e);
}
}
else{
auto itleft = free.upper_bound(l);
int left=-1; int distleft=INF;
if(itleft!=free.begin()){
left = *prev(itleft);
distleft = l-left;
}
auto itright = free.upper_bound(r);
int right=-1; int distright = INF;
if(itright!=free.end()){
right = *itright;
distright = right -r;
}
if(distleft <= distright && left!=-1 && starts[left]){
ans += 2*distleft;
free.erase(left);
queue.push_back(left);
}
else if(right!=-1 && ends[right]){
ans += 2*distright;
free.erase(right);
queue.push_back(right);
}
else{
if(distleft<= distright && left!=-1){
ans+=2*distleft;
free.erase(left);
queue.push_back(left);
}
else if(right!=-1){
ans+=2*distright;
free.erase(right);
queue.push_back(right);
}
}
}
}
return ans;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
0 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
0 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
0 ms |
212 KB |
Output is correct |
22 |
Correct |
1 ms |
212 KB |
Output is correct |
23 |
Correct |
1 ms |
212 KB |
Output is correct |
24 |
Correct |
1 ms |
212 KB |
Output is correct |
25 |
Correct |
1 ms |
340 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
28 |
Correct |
1 ms |
340 KB |
Output is correct |
29 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
0 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
0 ms |
212 KB |
Output is correct |
22 |
Correct |
1 ms |
212 KB |
Output is correct |
23 |
Correct |
1 ms |
212 KB |
Output is correct |
24 |
Correct |
1 ms |
212 KB |
Output is correct |
25 |
Correct |
1 ms |
340 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
28 |
Correct |
1 ms |
340 KB |
Output is correct |
29 |
Correct |
1 ms |
212 KB |
Output is correct |
30 |
Correct |
1229 ms |
60520 KB |
Output is correct |
31 |
Correct |
845 ms |
63804 KB |
Output is correct |
32 |
Correct |
75 ms |
12276 KB |
Output is correct |
33 |
Correct |
232 ms |
35936 KB |
Output is correct |
34 |
Correct |
245 ms |
35820 KB |
Output is correct |
35 |
Correct |
293 ms |
43636 KB |
Output is correct |
36 |
Correct |
374 ms |
54636 KB |
Output is correct |
37 |
Correct |
407 ms |
58980 KB |
Output is correct |
38 |
Correct |
423 ms |
59380 KB |
Output is correct |
39 |
Correct |
427 ms |
59212 KB |
Output is correct |
40 |
Correct |
454 ms |
59540 KB |
Output is correct |
41 |
Correct |
718 ms |
60512 KB |
Output is correct |
42 |
Correct |
561 ms |
60396 KB |
Output is correct |
43 |
Correct |
217 ms |
38376 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
212 KB |
3rd lines differ - on the 1st token, expected: '3304', found: '3324' |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
0 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
0 ms |
212 KB |
Output is correct |
22 |
Correct |
1 ms |
212 KB |
Output is correct |
23 |
Correct |
1 ms |
212 KB |
Output is correct |
24 |
Correct |
1 ms |
212 KB |
Output is correct |
25 |
Correct |
1 ms |
340 KB |
Output is correct |
26 |
Correct |
1 ms |
340 KB |
Output is correct |
27 |
Correct |
1 ms |
340 KB |
Output is correct |
28 |
Correct |
1 ms |
340 KB |
Output is correct |
29 |
Correct |
1 ms |
212 KB |
Output is correct |
30 |
Correct |
1229 ms |
60520 KB |
Output is correct |
31 |
Correct |
845 ms |
63804 KB |
Output is correct |
32 |
Correct |
75 ms |
12276 KB |
Output is correct |
33 |
Correct |
232 ms |
35936 KB |
Output is correct |
34 |
Correct |
245 ms |
35820 KB |
Output is correct |
35 |
Correct |
293 ms |
43636 KB |
Output is correct |
36 |
Correct |
374 ms |
54636 KB |
Output is correct |
37 |
Correct |
407 ms |
58980 KB |
Output is correct |
38 |
Correct |
423 ms |
59380 KB |
Output is correct |
39 |
Correct |
427 ms |
59212 KB |
Output is correct |
40 |
Correct |
454 ms |
59540 KB |
Output is correct |
41 |
Correct |
718 ms |
60512 KB |
Output is correct |
42 |
Correct |
561 ms |
60396 KB |
Output is correct |
43 |
Correct |
217 ms |
38376 KB |
Output is correct |
44 |
Incorrect |
1 ms |
212 KB |
3rd lines differ - on the 1st token, expected: '3304', found: '3324' |
45 |
Halted |
0 ms |
0 KB |
- |