제출 #1104917

#제출 시각아이디문제언어결과실행 시간메모리
1104917alexander707070Ancient Books (IOI17_books)C++14
22 / 100
94 ms22380 KiB
#include<bits/stdc++.h> #define MAXN 1000007 using namespace std; int n,s,p[MAXN],ans,last,mins,maxs,pref[MAXN],curr; bool li[MAXN]; void dfs(int x){ li[x]=true; ans+=abs(x-p[x]); mins=min(mins,x); maxs=max(maxs,x); if(!li[p[x]])dfs(p[x]); } long long minimum_walk(vector<int> P, int S){ n=int(P.size()); s=S+1; for(int i=1;i<=n;i++){ p[i]=P[i-1]+1; } for(int i=1;i<=n;i++){ if(!li[i]){ if(p[i]!=i)last=i; mins=n; maxs=1; dfs(i); pref[mins]++; pref[maxs]--; } } for(int i=1;i<=n-1;i++){ curr+=pref[i]; if(curr==0 and last>i)ans+=2; } return ans; } /*int main(){ cout<<minimum_walk({0, 2, 3, 1}, 0)<<"\n"; return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...