Submission #765744

#TimeUsernameProblemLanguageResultExecution timeMemory
765744SanguineChameleonShortcut (IOI16_shortcut)C++17
0 / 100
1 ms308 KiB
#include "shortcut.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1e6 + 20; long long len[maxn]; int depth[maxn]; int n, c; bool check(long long lim) { for (int x = 1; x <= n; x++) { for (int y = x + 1; y <= n; y++) { bool ok = true; for (int i = 1; i <= n && ok; i++) { for (int j = i + 1; j <= x && ok; j++) { if (len[j] - len[i] + depth[i] + depth[j] > lim) { ok = false; break; } } } for (int i = y; i <= n && ok; i++) { for (int j = i + 1; j <= n && ok; j++) { if (len[j] - len[i] + depth[i] + depth[j] > lim) { ok = false; break; } } } for (int i = 1; i <= x && ok; i++) { for (int j = x + 1; j <= y && ok; j++) { long long d1 = len[y] - len[x] + c - (len[j] - len[x]) + len[x] - len[i] + depth[i] + depth[j]; long long d2 = len[j] - len[i] + depth[i] + depth[j]; if (d1 > lim && d2 > lim) { ok = false; break; } } } for (int i = x; i <= y - 1 && ok; i++) { for (int j = y; j <= n && ok; j++) { long long d1 = len[y] - len[x] + c - (len[y] - len[i]) + len[j] - len[y] + depth[i] + depth[j]; long long d2 = len[j] - len[i] + depth[i] + depth[j]; if (d1 > lim && d2 > lim) { ok = false; break; } } } for (int i = x; i <= y && ok; i++) { for (int j = i + 1; j <= y && ok; j++) { long long d1 = len[y] - len[x] + c - (len[j] - len[i]) + depth[i] + depth[j]; long long d2 = len[j] - len[i] + depth[i] + depth[j]; if (d1 > lim && d2 > lim) { ok = false; break; } } } if (ok) { return true; } } } return false; } long long find_shortcut(int _n, vector<int> _len, vector<int> _depth, int _c) { n = _n; c = _c; len[1] = 0; for (int i = 2; i <= n; i++) { len[i] = len[i - 1] + _len[i - 2]; } for (int i = 1; i <= n; i++) { depth[i] = _depth[i - 1]; } long long res = -1; long long lt = 0; long long rt = 1e18L; while (lt <= rt) { long long mt = (lt + rt) / 2; if (check(mt)) { res = mt; rt = mt - 1; } else { lt = mt + 1; } } return res; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...