Submission #661344

#TimeUsernameProblemLanguageResultExecution timeMemory
661344bebraKrov (COCI17_krov)C++17
70 / 140
1598 ms596 KiB
#include <bits/stdc++.h> using namespace std; #define dbg(x) cerr << #x << ": " << x << endl; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<int> a(n); int max_value = 0; for (auto& x : a) { cin >> x; max_value = max(max_value, x); } auto g = [&](int idx, int value) { long long res = 0; for (int i = 0; i < n; ++i) { res += abs(a[i] - (value - abs(i - idx))); } return res; }; auto f = [&](int i){ int l = max(i + 1, n - i); int r = 1e9 + 5; while (l != r - 1) { int m = (l + r) / 2; if (g(i, m) > g(i, m + 1)) { l = m; } else { r = m; } } long long curr_min = min(g(i, l), g(i, r)); return curr_min; }; int l = 0; int r = n; while (l != r - 1) { int m = (l + r) / 2; if (f(m) > f(m + 1)) { l = m; } else { r = m; } } long long ans = 1e18; for (int i = max(0, l - 1000); i < min(n, r + 1000); ++i) { ans = min(ans, f(i)); } cout << ans << '\n'; return 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...
#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...