Submission #1124549

#TimeUsernameProblemLanguageResultExecution timeMemory
1124549NotLinuxAncient Books (IOI17_books)C++20
50 / 100
116 ms19944 KiB
#include "books.h" #include <bits/stdc++.h> using namespace std; long long minimum_walk(vector<int> p, int s) { int n = (int)p.size(); int ans[n-1]={0} , pre1[n-1]={0} , pre2[n-1]={0}; for(int i = 0;i<n;i++){ if(p[i] > i){ pre1[i]++; pre1[p[i]]--; } else if(p[i] < i){ pre2[i]--; pre2[p[i]]++; } } for(int i = 0;i<n-1;i++){ if(i > 0){ pre1[i] += pre1[i-1]; pre2[i] += pre2[i-1]; } // cout << i << " : " << pre1[i] << " , " << pre2[i] << endl; ans[i] = max(pre1[i] , pre2[i]) * 2; } bool bl = 0; for(int i = 0;i<s;i++){ if(ans[i]){ bl = 1; } else if(ans[i] == 0 and bl){ ans[i] = 2; } } bl = 0; for(int i = n-2;i>=s;i--){ if(ans[i]){ bl = 1; } else if(ans[i] == 0 and bl){ ans[i] = 2; } } long long ret = 0; for(int i = 0;i<n-1;i++)ret += ans[i]; return ret; }
#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...