Submission #242943

#TimeUsernameProblemLanguageResultExecution timeMemory
242943neihcr7jPalembang Bridges (APIO15_bridge)C++14
100 / 100
387 ms15312 KiB
#include<bits/stdc++.h> #define oo ll(1e15) #define maxn 100005 using namespace std; typedef long long ll; ll n, k; vector < pair < ll, ll > > L; ll a[maxn], b[maxn]; void calc(vector < pair < ll, ll > >& L, ll a[]){ multiset < ll > s, tem; s.clear(); tem.clear(); ll sum = 0, ret = 0; a[0] = 0; for (ll i = 1; i <= n; ++i) { ll x = L[i - 1].first, y = L[i - 1].second; sum += x + y; s.insert(x); ret += x; s.insert(y); ret += y; while (s.size() > i) { ret -= *s.begin(); tem.insert(-(*s.begin())); s.erase(s.begin()); } while (-(*tem.begin()) > *s.begin()) { ret -= *tem.begin() + *s.begin(); ll tg = -*tem.begin(); tem.erase(tem.begin()); tem.insert(-*s.begin()); s.erase(s.begin()); s.insert(tg); } a[i] = 2 * ret - sum; } } int main(){ #define TASK "ABC" // freopen(TASK".inp", "r", stdin); freopen(TASK".out", "w", stdout); ios_base::sync_with_stdio(0); ll ret = 0; cin >> k >> n; for (ll i = 0; i < n; ++i) { char ch1, ch2; ll x, y; cin >> ch1 >> x >> ch2 >> y; if (x > y) swap(x, y); if (ch1 == ch2) { ret += y - x; continue; } L.push_back({x, y}); } n = L.size(); sort(L.begin(), L.end(), [](pair < ll, ll > i, pair < ll, ll > j){ return i.first + i.second < j.first + j.second; }); calc(L, a); reverse(L.begin(), L.end()); calc(L, b); ll ans = a[n] + ret + n; if (k == 1) cout << ans; else { for (ll i = 1; i < n; ++i) { // cerr << i << ' ' << b[4] << '\n'; ans = min(ans, a[i] + b[n - i] + ret + n); } cout << ans; } return 0; }

Compilation message (stderr)

bridge.cpp: In function 'void calc(std::vector<std::pair<long long int, long long int> >&, ll*)':
bridge.cpp:28:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (s.size() > i) {
            ~~~~~~~~~^~~
#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...