Submission #425402

#TimeUsernameProblemLanguageResultExecution timeMemory
425402penguinhackerPalembang Bridges (APIO15_bridge)C++14
100 / 100
79 ms5828 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ar array const int mxN=1e5; int n, k; ll add, ans, tot, p[mxN]; vector<ar<int, 2>> v; priority_queue<int> lo; priority_queue<int, vector<int>, greater<int>> hi; void ins(int x) { if (lo.empty()||x<=lo.top()) lo.push(x), tot-=x; else hi.push(x), tot+=x; if (lo.size()>hi.size()+1) { int x=lo.top(); lo.pop(); tot+=2*x, hi.push(x); } if (hi.size()>lo.size()) { int x=hi.top(); hi.pop(); tot-=2*x, lo.push(x); } } ll get() { return tot+(lo.size()-hi.size())*lo.top(); } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> k >> n; for (int i=0; i<n; ++i) { char a, b; int x, y; cin >> a >> x >> b >> y; if (a==b) add+=abs(x-y); else { ++add; v.push_back({x, y}); } } if (v.empty()) { cout << add; return 0; } sort(v.begin(), v.end(), [](ar<int, 2> a, ar<int, 2> b) {return a[0]+a[1]<b[0]+b[1];}); for (int i=0; i<v.size(); ++i) { ins(v[i][0]), ins(v[i][1]); p[i]=get(); } ans=p[v.size()-1]; if (k==2) { tot=0; priority_queue<int>().swap(lo); priority_queue<int, vector<int>, greater<int>>().swap(hi); for (int i=v.size()-1; i; --i) { ins(v[i][0]), ins(v[i][1]); ans=min(ans, p[i-1]+get()); } } cout << add+ans; return 0; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:53:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 2> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |  for (int i=0; i<v.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...