Submission #152524

#TimeUsernameProblemLanguageResultExecution timeMemory
152524groeneprofAncient Books (IOI17_books)C++14
100 / 100
171 ms15048 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; long long minimum_walk(vector<int> p, int s) { int i = s; int j = s-1;//incl-incl int mi = s, ma=s; int n = p.size(); long long cnt = 0, curl = 0, curr = 0; int b = 0, e = n; for(int k = 0; k<s&&p[k]==k; k++) b = k+1; for(int k = n-1; k>s&&p[k]==k; k--) e = k; while(i>b||j<e-1){ bool bol = false; while(mi < i){ bol = true; i--; if(p[i]>s){ cnt += curl; curl = 0; curr = 0; } mi = min(mi, p[i]); ma = max(ma, p[i]); } while(j<ma){ bol = true; j++; if(p[j]<s){ cnt+=curr; curl = 0; curr = 0; } mi = min(mi, p[j]); ma = max(ma, p[j]); } if(!bol){ //cur+=2; //cout<<mi<<" "<<ma<<endl; if(mi>b){mi--;curl+=2;} if(ma<e-1){ma++;curr+=2;} } } //cnt+=< //cout<<cnt<<endl; cnt+=curl+curr; for(int ii = 0; ii<n; ii++){ cnt += abs(ii - p[ii]); } return cnt; }
#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...