제출 #598217

#제출 시각아이디문제언어결과실행 시간메모리
598217yanndev고대 책들 (IOI17_books)C++17
0 / 100
2071 ms368 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; map<pair<vector<int>, pair<int, int>>, pair<bool, ll>> vis {}; ll recSolve(int pos, vector<int> vals, int carry, int dep) { if (pos >= (int)vals.size() || pos < 0) return 1e9; if (dep > 20) return 1e9; /*if (vis[{vals, {pos, carry}}].first) return vis[{vals, {pos, carry}}].second;*/ ll mnAns = 1e9; //vis[{vals, {pos, carry}}] = {true, 1e9}; bool ok = true; for (int i = 0; i < (int)vals.size(); i++) if (vals[i] != i) ok = false; if (ok) { //printf("food bruh %d %d\n", pos); vis[{vals, {pos, carry}}] = {true, pos}; return pos; } mnAns = min(mnAns, 1 + recSolve(pos + 1, vals, carry, dep + 1)); mnAns = min(mnAns, 1 + recSolve(pos - 1, vals, carry, dep + 1)); int old = vals[pos]; vals[pos] = carry; mnAns = min(mnAns, recSolve(pos, vals, old, dep + 1)); vals[pos] = old; //vis[{vals, {pos, carry}}] = {true, mnAns}; return mnAns; } ll minimum_walk(vector<int> p, int s) { int n = (int)p.size(); return recSolve(0, p, -1, 0); /*vector<vector<int>> cycles {}; vector<bool> vis (n, false); for (int i = 0; i < n; i++) { if (vis[i]) continue; //ans += abs(i - last); int pos = i; cycles.push_back({}); while (!vis[pos]) { vis[pos] = true; cycles.back().push_back(pos); //ans += abs(p[pos] - pos); pos = p[pos]; } } //ans += last; vector<int> perm {}; for (int i = 0; i < (int)cycles.size(); i++) perm.push_back(i); do { ll sub = 0; int lst = 0; for (int i = 0; i < (int)cycles.size(); i++) { for (auto& x: cycles[i]) { sub += abs(x - lst); lst = x; } } sub += lst; ans = min(ans, sub); } while (next_permutation(perm.begin(), perm.end())); return ans;*/ }

컴파일 시 표준 에러 (stderr) 메시지

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:40:9: warning: unused variable 'n' [-Wunused-variable]
   40 |     int n = (int)p.size();
      |         ^
#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...