Submission #1133385

#TimeUsernameProblemLanguageResultExecution timeMemory
1133385MatbubblePalembang Bridges (APIO15_bridge)C++20
100 / 100
63 ms6076 KiB
#include <iostream> #include <iomanip> #include <string> #include <math.h> #include <algorithm> #include <cstring> #include <numeric> #include <vector> #include <bitset> #include <map> #include <set> #include <queue> #include <deque> #include <stack> #include <unordered_map> #include <unordered_set> using namespace std; #define dbg(x) cerr<<#x<<": "<<x<<"\n"; /* Shhhhh! */ priority_queue<long long>ll; priority_queue<long long, vector<long long>, greater<long long>>rr; long long l, r; void add(long long x){ long long median=(ll.empty()?1e18:ll.top()); if(x<=median){ ll.push(x); l+=x; }else{ rr.push(x); r+=x; } if((long long)rr.size()+1<(long long)ll.size()){ long long next=ll.top(); ll.pop(); rr.push(next); l-=next; r+=next; }else if((long long)rr.size()>(long long)ll.size()){ long long next=rr.top(); rr.pop(); ll.push(next); r-=next; l+=next; } } const long long maxN=1e5; long long pref[maxN+1]; void solve(){ long long k, n, extra=0; cin>>k>>n; using T=pair<long long, long long>; vector<T>v; for(long long i=0 ; i<n ; i++){ char p, q; long long s, t; cin>>p>>s>>q>>t; if(p==q) extra+=abs(s-t); else v.push_back({s, t}); } n=(long long)v.size(); sort(v.begin(), v.end(), [&](T a, T b){ return a.first+a.second<b.second+b.first; }); for(long long i=0 ; i<n ; i++){ add(v[i].first); add(v[i].second); pref[i]=r-l; } long long ans=pref[n-1]; if(k==2){ while(!ll.empty()) ll.pop(); while(!rr.empty()) rr.pop(); l=r=0; for(long long i=n-1 ; i>=0 ; i--){ add(v[i].first); add(v[i].second); ans=min(ans, r-l+pref[i-1]); } } cout<<ans+extra+n<<"\n"; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; }
#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...