Submission #387266

#TimeUsernameProblemLanguageResultExecution timeMemory
387266jjang36524Palembang Bridges (APIO15_bridge)C++14
100 / 100
190 ms8828 KiB
#include <iostream> #include <algorithm> #include <queue> #include <vector> #include <functional> #include <stdlib.h> using namespace std; #define int long long priority_queue<int>l; priority_queue<int,vector<int>,greater<int>>r; int lc=0; void ins(int n) { int ml=l.size()?l.top():(1<<30); if(n<ml) { lc+=n; l.push(n); if(l.size()-1>r.size()) { lc-=l.top(); r.push(l.top()); l.pop(); } } else { r.push(n); if(r.size()>l.size()) { lc+=r.top(); l.push(r.top()); r.pop(); } } } bool cmp(pair<int,int>a,pair<int,int>b) { return a.first+a.second<b.first+b.second; } signed main() { int N,K; cin >> K >> N; int i; int ans=0; vector<pair<int,int>>x; for(i=0;i<N;i++) { char a,b; int c,d; cin >> a >> c >> b >> d; if(a==b) ans+=max(c,d)-min(c,d); else x.push_back({min(c,d),max(c,d)}); } N=x.size(); sort(x.begin(),x.end(),cmp); vector<int>la; vector<int>ra; la.push_back(0); int totsu=0; for(i=0;i<N;i++) { ins(x[i].first); ins(x[i].second); totsu+=x[i].first+x[i].second; la.push_back(totsu-2*lc); } ra.push_back(0); totsu=0; lc=0; while(l.size()) l.pop(); while(r.size()) r.pop(); for(i=N-1;i>=0;i--) { ins(x[i].first); ins(x[i].second); totsu+=x[i].first+x[i].second; int mid=l.top(); ra.push_back(totsu-2*lc); } int an=1LL<<60; for(i=0;i<=N;i++) { if(K==2) an=min(an,la[i]+ra[N-i]); else an=la[N]; } cout << ans+an+N; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:83:13: warning: unused variable 'mid' [-Wunused-variable]
   83 |         int mid=l.top();
      |             ^~~
#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...