Submission #1113272

#TimeUsernameProblemLanguageResultExecution timeMemory
1113272MasterLine Town (CCO23_day1problem3)C++17
3 / 25
2067 ms9764 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 500'000 + 10, MAX = 1'000'000'000'000'000; int n; int h[N]; int32_t main() { cin.tie(0)->sync_with_stdio(0); cin >> n; for (int i = 1; i <= n; ++i) cin >> h[i]; int answer = MAX; for (int negNum = 0; negNum <= n; ++negNum) { deque<int> odd, even; for (int i = 1; i <= n; ++i) { if (i & 1) { if (h[i] == 1) even.push_back(i); else odd.push_back(i); } else { if (h[i] == 1) odd.push_back(i); else even.push_back(i); } } int total = 0; for (int i = 1; i <= negNum; ++i) { auto& vt = (i & 1 ? odd : even); if (!vt.size()) { total = MAX; break; } total += max(0ll, vt.front() - i); vt.pop_front(); } for (int i = negNum + 1; i <= n; ++i) { auto& vt = ((i ^ 1) & 1 ? odd : even); if (!vt.size()) { total = MAX; break; } total += max(0ll, vt.front() - i); vt.pop_front(); } answer = min(answer, total); } cout << (answer == MAX ? -1 : answer) << "\n"; }
#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...