Submission #427035

#TimeUsernameProblemLanguageResultExecution timeMemory
427035HazemAncient Books (IOI17_books)C++14
0 / 100
2053 ms268 KiB
#include "books.h" #include <bits/stdc++.h> #define LL long long using namespace std; const LL LINF = 1e18; int a[10],n; vector<int>vec; bool check(){ bool q = 1; for(int i=0;i<n;i++) q &= (a[i]==vec[i]); return q; } LL bt(int pos,int cur,int cnt); LL move(int pos,int cur,int cnt){ LL ret = LINF; if(pos<n-1) ret = min(ret,bt(pos+1,cur,cnt+1)); if(pos>0) ret = min(ret,bt(pos-1,cur,cnt+1)); return ret; } LL bt(int pos,int cur,int cnt){ if(!pos&&check()) return cnt; if(cnt>15) return LINF; LL ret = LINF; ret = min(ret,move(pos,cur,cnt)); // if(cur==-1){ // cur = a[pos]; // a[pos] = -1; // ret= min(ret,move(pos,cur,cnt)); // a[pos] = cur; // cur = -1; // } // if(a[pos]==-1){ // a[pos] = cur; // cur = -1; // ret = min(ret,move(pos,cur,cnt)); // cur = a[pos]; // a[pos] = -1; // } swap(cur,a[pos]); ret = min(ret,move(pos,cur,cnt)); swap(cur,a[pos]); return ret; } long long minimum_walk(std::vector<int> P, int s) { vec = P; n = P.size(); for(int i=0;i<n;i++) a[i] = i; return bt(0,-1,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...