Submission #1076002

#TimeUsernameProblemLanguageResultExecution timeMemory
1076002AbitoAncient Books (IOI17_books)C++17
12 / 100
2075 ms1048576 KiB
#include "books.h" #include <bits/stdc++.h> //#define int long long #define pb push_back using namespace std; // first n is permutation , n is index, n+1 is book in hand int n; map<vector<int>,int> dis; void bfs(vector<int> s){ deque<vector<int>> q; q.push_front(s); dis[s]=0; while (!q.empty()){ vector<int> v=q.front(),to; q.pop_front(); // switch books to=v; to[v[n]]=v[n+1]; to[n+1]=v[v[n]]; if (dis.find(to)==dis.end()){ dis[to]=dis[v]; q.push_front(to); } // walk forward if (v[n]+1<n){ to=v; to[n]=v[n]+1; if (dis.find(to)==dis.end()){ dis[to]=dis[v]+1; q.push_back(to); } } //walk backwards if (v[n]-1>=0){ to=v; to[n]=v[n]-1; if (dis.find(to)==dis.end()){ dis[to]=dis[v]+1; q.push_back(to); } } } } long long minimum_walk(std::vector<int32_t> p, int32_t s) { n=p.size(); vector<int> v; for (int i=0;i<n;i++) v.pb(i); v.pb(s); v.pb(n); bfs(v); v=p; v.pb(s); v.pb(n); return dis[v]; }
#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...