Submission #1298974

#TimeUsernameProblemLanguageResultExecution timeMemory
1298974annnPalembang Bridges (APIO15_bridge)C++20
100 / 100
150 ms12156 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl "\n" #define pb push_back #define ff first #define ss second #define ii pair<int, int> #define vi vector<int> #define vii vector<pair<int, int>> #define yes cout << "YES\n" #define no cout << "NO\n" #define mii map<int, int> #define rep(i, a, b) for (int i = a; i <= b; i++) #define all(a, len) (a) + 1, (a) + len + 1 #define vall(a) (a).begin(), a.end() #define _READ(name) freopen(name, "r", stdin) #define _WRITE(name) freopen(name, "w", stdout) const int INF = 4e18; const int MOD = 1e9 + 7; int k, n; multiset<int> ms1, ms2; int suml, sumr; void insert(int x) { if (ms2.size() && *ms2.begin() < x) { ms2.insert(x); sumr += x; } else { ms1.insert(x); suml += x; } if (ms1.size() > ms2.size() + 1) { int last = *ms1.rbegin(); ms2.insert(last); ms1.erase(ms1.find(last)); suml -= last; sumr += last; } if (ms2.size() > ms1.size()) { int first = *ms2.begin(); ms1.insert(first); ms2.erase(ms2.find(first)); sumr -= first; suml += first; } } int pref[100005]; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> k >> n; vii a; int same = 0; while (n--) { char p, q; int s, t; cin >> p >> s >> q >> t; if (p == q) { same += abs(s-t); } else { a.pb({s, t}); } } n = a.size()-1; same += n + 1; sort(a.begin(), a.end(), [](ii x, ii y) { return x.ff + x.ss < y.ff + y.ss; }); for (int i = 0; i <= n; i++) { insert(a[i].ff); insert(a[i].ss); pref[i] = sumr - suml; } if (k == 1) { cout << pref[n] + same; return 0; } ms1.clear(); ms2.clear(); int ans = pref[n]; suml = sumr = 0; for (int i = n; i > 0; i--) { insert(a[i].ff); insert(a[i].ss); ans = min(ans, sumr - suml + pref[i-1]); } cout << ans + same; 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...