Submission #1149744

#TimeUsernameProblemLanguageResultExecution timeMemory
1149744irmuunPalembang Bridges (APIO15_bridge)C++17
100 / 100
67 ms7348 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() priority_queue<ll>L; priority_queue<ll,vector<ll>,greater<ll>>R; ll sumL=0,sumR=0; void add(ll x){ ll med=(L.empty()?(ll)1e9:L.top()); if(x<=med){ L.push(x); sumL+=x; } else{ R.push(x); sumR+=x; } if(L.size()<R.size()){ ll y=R.top(); R.pop(); L.push(y); sumL+=y; sumR-=y; } else if(L.size()>R.size()+1){ ll y=L.top(); L.pop(); R.push(y); sumR+=y; sumL-=y; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll K,n; cin>>K>>n; vector<array<ll,3>>v; ll same=0; for(ll i=1;i<=n;i++){ char p,q; ll a,b; cin>>p>>a>>q>>b; if(p==q){ same+=abs(a-b); } else{ v.pb({a+b,a,b}); } } sort(all(v)); ll ans=0; ll m=v.size(); ll pre[m+5],suf[m+5]; pre[0]=0; for(ll i=0;i<m;i++){ add(v[i][1]); add(v[i][2]); pre[i+1]=sumR-sumL; } ans=pre[m]; if(K==2){ while(!L.empty()) L.pop(); while(!R.empty()) R.pop(); sumL=sumR=0; // L.clear(); // R.clear(); suf[m]=0; for(ll i=m-1;i>=1;i--){ add(v[i][1]); add(v[i][2]); suf[i]=sumR-sumL; ans=min(ans,pre[i]+suf[i]); } } cout<<ans+same+m; }
#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...