Submission #427013

#TimeUsernameProblemLanguageResultExecution timeMemory
427013HazemAncient Books (IOI17_books)C++14
0 / 100
219 ms288 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((cur==-1)&&!pos&&check()) return cnt; if(cnt>12) 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; } if(cur>=0&&a[pos]>=0){ 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...