제출 #171234

#제출 시각아이디문제언어결과실행 시간메모리
171234VEGAnnPalembang Bridges (APIO15_bridge)C++14
100 / 100
405 ms14504 KiB
#include <bits/stdc++.h> #define sz(x) ((int)x.size()) #define all(x) x.begin(),x.end() #define PB push_back #define MP make_pair #define ft first #define sd second #define pii pair<int,int> using namespace std; typedef long long ll; const ll OO = 1e18; ll best = OO, extra = 0; vector<ll> fi, se; vector<pii> seg; multiset<int> big, sml; int k, n; void solve(vector<ll> &vc){ vc[0] = 0; ll sum_big = 0ll; ll sum_sml = 0ll; big.clear(); sml.clear(); int mid = 0; for (int i = 0; i < sz(seg); i++) { if (seg[i].ft <= mid && seg[i].sd >= mid){ big.insert(seg[i].sd); sml.insert(seg[i].ft); sum_big += seg[i].sd; sum_sml += seg[i].ft; } else if (seg[i].sd < mid){ sml.insert(seg[i].sd); sml.insert(seg[i].ft); sum_sml += seg[i].ft; sum_sml += seg[i].sd; ll cur = *(--sml.end()); sum_big += cur; sum_sml -= cur; sml.erase(--sml.end()); big.insert(cur); } else { big.insert(seg[i].sd); big.insert(seg[i].ft); sum_big += seg[i].ft; sum_big += seg[i].sd; ll cur = *(big.begin()); sum_sml += cur; sum_big -= cur; big.erase(big.begin()); sml.insert(cur); } vc[i + 1] = sum_big - sum_sml; mid = (*big.begin()); } } bool cmp(pii x, pii y){ return (x.ft + x.sd) < (y.ft + y.sd); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> k >> n; for (int i = 0; i < n; i++){ char c1, c2; int x, y; cin >> c1 >> x >> c2 >> y; if (c1 == c2){ extra += abs(x - y); } else { extra++; if (x > y) swap(x, y); seg.PB(MP(x, y)); } } sort(all(seg), cmp); fi.resize(sz(seg) + 1); se.resize(sz(seg) + 1); solve(fi); reverse(all(seg)); solve(se); reverse(all(se)); int bd = (k == 1 ? 1 : sz(fi)); for (int i = 0; i < bd; i++) best = min(best, fi[i] + se[i]); if (best == OO) best = 0; cout << extra + best; 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...