제출 #943669

#제출 시각아이디문제언어결과실행 시간메모리
943669HiepVu217Palembang Bridges (APIO15_bridge)C++17
22 / 100
42 ms5580 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 17; int k, n; long long s[N], ans, ls, rs; priority_queue <int> lpq, rpq; vector <pair <int, int>> vt; bool cmp (pair <int, int> x, pair <int, int> y) { return x.first + x.second < y.first + y.second; } void add (int x) { int mid; if (lpq.size()) { mid = lpq.top(); } else { mid = 1e9 + 17; } if (x <= mid) { lpq.push(x); ls += x; } else { rpq.push(-x); rs += x; } if (lpq.size() > rpq.size() + 1) { int t = lpq.top(); lpq.pop(); ls -= t; rpq.push(-t); rs += t; } if (rpq.size() > lpq.size()) { int t = -rpq.top(); rpq.pop(); rs -= t; lpq.push(t); ls += t; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> k >> n; long long z = 0; vt.push_back ({0, 0}); for (int i = 1; i <= n; ++i) { int a, b; char x, y; cin >> x >> a >> y >> b; if (x == y) { z += abs (a - b); continue; } vt.push_back ({a, b}); } sort (vt.begin(), vt.end(), cmp); n = vt.size() - 1; z += n; for (int i = 1; i <= n; ++i) { add (vt[i].first); add (vt[i].second); s[i] = rs - ls; } ans = s[n]; cout << ans + z; }
#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...