Submission #242693

#TimeUsernameProblemLanguageResultExecution timeMemory
242693neihcr7jPalembang Bridges (APIO15_bridge)C++14
22 / 100
145 ms7408 KiB
#include<bits/stdc++.h> #define oo ll(1e15) #define maxn 100005 using namespace std; typedef long long ll; int n, k; vector < pair < int, int > > L; ll a[maxn], b[maxn]; void calc(vector < pair < int, int > >& L, ll a[]){ multiset < int > s; s.clear(); ll sum = 0, ret = 0; a[0] = 0; for (int i = 1; i <= n; ++i) { int 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 (int i = 0; i < n; ++i) { char ch1, ch2; int 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()); ll ans = oo; calc(L, a); reverse(L.begin(), L.end()); calc(L, b); if (k == 1) cout << a[n] + ret + n; else { for (int 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<int, 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...