Submission #349968

#TimeUsernameProblemLanguageResultExecution timeMemory
349968denkendoemeerPalembang Bridges (APIO15_bridge)C++14
100 / 100
142 ms5888 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long ll v[100005],s1,s2; int mij; vector<pair<int,int>>poz; priority_queue<int>pq; priority_queue<int,vector<int>,greater<int>>pq2; void update(int x) { if (x<mij) pq.push(x),s1+=x; else pq2.push(x),s2+=x; if (pq.size()+2<=pq2.size()){ pq.push(mij); s1+=mij; mij=pq2.top(); pq2.pop(); s2-=mij; } else if (pq.size()>=pq2.size()+2){ pq2.push(mij); s2+=mij; mij=pq.top(); pq.pop(); s1-=mij; } } int cmp(pair<int,int>a,pair<int,int>b) { return a.second+a.first<b.first+b.second; } int main() { //freopen(".in","r",stdin); //freopen(".out","w",stdout); int k,n,i; ll ans=0; scanf("%d%d",&k,&n); for(i=0;i<n;i++){ char ch1,ch2; pair<int,int>x; cin>>ch1>>x.first>>ch2>>x.second; if (ch1!=ch2){ poz.push_back(x); ++ans; } else ans+=abs(x.first-x.second); } sort(poz.begin(),poz.end(),cmp); for(i=0;i<poz.size();i++){ update(poz[i].first); update(poz[i].second); v[i+1]=s2-(ll)pq2.size()*mij+((ll)pq.size()-1)*mij-s1; } ll ans2=v[poz.size()]; if (k==2){ pq=priority_queue<int>(); pq2=priority_queue<int,vector<int>,greater<int>>(); mij=s1=s2=0; for(i=poz.size()-1;i>0;i--){ update(poz[i].first); update(poz[i].second); ans2=min(ans2,v[i]+s2-(ll)pq2.size()*mij+((ll)pq.size()-1)*mij-s1); } } printf("%lld\n",ans+ans2); return 0; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:54:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |     for(i=0;i<poz.size();i++){
      |             ~^~~~~~~~~~~
bridge.cpp:41:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   41 |     scanf("%d%d",&k,&n);
      |     ~~~~~^~~~~~~~~~~~~~
#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...