Submission #1311091

#TimeUsernameProblemLanguageResultExecution timeMemory
1311091math_rabbit_1028Shortcut (IOI16_shortcut)C++20
0 / 100
2 ms344 KiB
#include "shortcut.h" #include <bits/stdc++.h> using namespace std; int n, c; vector<int> l, d; vector<long long> sum; bool check(long long lim) { pair<long long, long long> xpy = {-1e18, 1e18}, xmy = {-1e18, 1e18}; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (d[i] + d[j] + sum[j] - sum[i] <= lim) continue; long long a = lim - c - d[i] - d[j]; xpy.first = max(xpy.first, sum[i] + sum[j] - a); xpy.second = min(xpy.second, sum[i] + sum[j] + a); xmy.first = max(xmy.first, sum[i] - sum[j] - a); xmy.second = min(xmy.second, sum[i] - sum[j] + a); } } for (int p = 0; p < n; p++) { for (int q = 0; q < n; q++) { if (p == q) continue; if (xpy.first <= sum[p] + sum[q] && sum[p] + sum[q] <= xpy.second) { if (xmy.first <= sum[p] - sum[q] && sum[p] - sum[q] <= xmy.second) { return true; } } } } return false; } long long find_shortcut(int _n, vector<int> _l, vector<int> _d, int _c) { n = _n; l = _l; d = _d; c = _c; sum.resize(n); sum[0] = 0; for (int i = 1; i < n; i++) { sum[i] = sum[i-1] + l[i-1]; } long long st = c, ed = 1e18; while (st < ed) { long long mid = (st + ed) / 2; if (check(mid)) ed = mid; else st = mid + 1; } return st; }

Compilation message (stderr)

shortcut.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...