Submission #100129

#TimeUsernameProblemLanguageResultExecution timeMemory
100129TadijaSebezPalembang Bridges (APIO15_bridge)C++11
0 / 100
3 ms384 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define ll long long const int N=100050; const ll inf=9e18; int l[N],r[N]; int main() { int k,n; scanf("%i %i",&k,&n); char a,b; vector<pair<int,int>> events; vector<int> unq; int L=0,R=0; ll ls=0,rs=0; ll all=0; for(int i=1;i<=n;i++) { scanf("\n%c %i %c %i",&a,&l[i],&b,&r[i]); all+=abs(l[i]-r[i])+(a!=b); if(a!=b) { if(l[i]>r[i]) swap(l[i],r[i]); events.pb(mp(l[i],0)); events.pb(mp(r[i],1)); unq.pb(l[i]); unq.pb(r[i]); L++; ls+=l[i]; } } sort(events.begin(),events.end()); sort(unq.begin(),unq.end()); unq.resize(unique(unq.begin(),unq.end())-unq.begin()); int j=0; ll ans=inf; for(int i=0;i<unq.size();i++) { int x=unq[i]; while(j<events.size() && events[j]==mp(x,0)) L--,ls-=x,j++; ans=min(ans,(ll)x*R-rs+ls-(ll)x*L); while(j<events.size() && events[j]==mp(x,1)) R++,rs+=x,j++; } printf("%lld\n",all+2*ans); return 0; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:39:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<unq.size();i++)
              ~^~~~~~~~~~~
bridge.cpp:42:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(j<events.size() && events[j]==mp(x,0)) L--,ls-=x,j++;
         ~^~~~~~~~~~~~~~
bridge.cpp:44:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(j<events.size() && events[j]==mp(x,1)) R++,rs+=x,j++;
         ~^~~~~~~~~~~~~~
bridge.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&k,&n);
  ~~~~~^~~~~~~~~~~~~~~
bridge.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("\n%c %i %c %i",&a,&l[i],&b,&r[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...