제출 #613790

#제출 시각아이디문제언어결과실행 시간메모리
613790Mr_Husanboy고대 책들 (IOI17_books)C++14
0 / 100
1 ms212 KiB
#include "books.h" #include<bits/stdc++.h> using namespace std; #define all(a) (a).begin(), (a).end() #define vi vector<int> #define ff first #define ss second #define ll long long long long minimum_walk(vector<int> p, int s) { int n = p.size(); int cur = -1; ll ans = 0; int l = 0, r = n-1; while(l<n && p[l] == l) l++; while(r>=0 && p[r] == r) r--; while(l<=r){ ans += abs(l-s); for(int i=l; i<=r; i++){ // cout << i << "i " << cur << endl; if(p[i] != i){ if(cur < p[i]){ swap(cur, p[i]); } } if(cur != -1){ if(cur == i){ swap(cur, p[i]); } } // cout << i << "i " << cur << endl; ans ++; } ans --; for(int i = r - 1; i>=l; i--){ // cout << i << "i " << cur << endl; if(p[i] != i){ if(cur > p[i]) swap(cur, p[i]); } if(cur != -1){ if(cur == i){ swap(cur, p[i]); } } // cout << i << "i " << cur << endl; ans ++; } s = l; while(l<n && p[l] == l) l++; while(r>=0 && p[r] == r) r--; } ans += s; // for(auto u : p) cout << u << ' '; return ans; }
#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...