Submission #242939

#TimeUsernameProblemLanguageResultExecution timeMemory
242939neihcr7jPalembang Bridges (APIO15_bridge)C++14
22 / 100
143 ms8296 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; s.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(); s.erase(s.begin()); } 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]; if (k == 1) cout << a[n] + ret + n; else { for (ll i = 1; i < n; ++i) ans = min(ans, a[i] + b[n - i]); cout << ans + ret + n; } return 0; }

Compilation message (stderr)

bridge.cpp: In function 'void calc(std::vector<std::pair<long long int, long long int> >&, ll*)':
bridge.cpp:27: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...