Submission #60530

#TimeUsernameProblemLanguageResultExecution timeMemory
60530dukati8Palembang Bridges (APIO15_bridge)C++14
0 / 100
3 ms492 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for (int i=a; i<int(b); i++) #define all(x) x.begin(),x.end() vector <pair<long long,long long> > travels; vector <long long> points; long long cost(int i) { long long point=points[i]; long long ans=0; for (auto a:travels) { long long c,d; c=a.first; d=a.second; if (point >d) ans+=2*(point-d); if (point<c) ans+=2*(c-point); } return ans; } int main() { int k,n; cin >> k >> n; long long sum=0; rep(i,0,n) { string a,b; long long c,d; cin >> a >> c >> b >> d; if (a==b) { sum+=abs(c-d); } else { travels.push_back(make_pair(min(c,d),max(c,d))); sum+=1+abs(c-d); points.push_back(c); points.push_back(d); } } if (k==1) { sort(all(points)); int lo,hi; lo=0; hi=points.size()-1; while (lo+10<hi) { int mid1=lo+(hi-lo)/3; int mid2=lo+(2*hi-2*lo)/3; long long val1,val2; val1=cost(mid1); val2=cost(mid2); if (val1<val2) hi=mid2; else lo=mid1; } long long best=1000000000000000; rep (i,lo,hi+1) { best=min(best,cost(i)); } cout << best+sum << endl; } }
#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...