# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
43431 | 2018-03-16T05:49:13 Z | duiceman | Palembang Bridges (APIO15_bridge) | C++14 | 5 ms | 3680 KB |
#include <bits/stdc++.h> using namespace std; #define x first #define y second #define umap unordered_map #define pqueue priority_queue #define mset multiset #define mp make_pair #define mt make_tuple #define all(x) x.begin(),x.end() #define long long long #define MOD 1000000007 #define MAX (long)(1e16+5) #define MIN (long)(-1e16-5) #define FILEIN_ freopen("__in.txt","r",stdin) #define FILEOUT_ freopen("__out.txt","w",stdout) #define FILEIO_ freopen("__in.txt","r",stdin),freopen("__out.txt","w",stdout) #define FILEIN(text) freopen(text,"r",stdin) #define FILEOUT(text) freopen(text,"w",stdout) #define FILEIO(text) freopen(text".in","r",stdin),freopen(text".out","w",stdout) char c1[5],c2[5]; umap<long,long> in,out; pair<long,long> a[100005]; main(){ long t,i,j,k,n,m,x,y,res=0,l=0,r=0,mn=MAX,m1,m2,r1,r2; set<long> pos; in.reserve(200005); out.reserve(200005); double med; scanf("%lld %lld",&m,&n); if(m != 1) return 136; for(i = 1; i <= n; i++){ scanf("%s %lld %s %lld",c1,&x,c2,&y); x++; y++; if(x > y) swap(x,y); res += y-x; if(c1[0] == c2[0]){ n--; i--; continue; } a[i] = {x,y}; med += (double)(x+y)/2.0; res++; in[x]++; out[y]++; pos.emplace(x); pos.emplace(y); } med /= (double)n; // printf("%.2lf\n",med); m1 = (long)med; r1 = res; for(i = 1; i <= n; i++){ if(m1 >= a[i].x && m1 <= a[i].y) continue; r1 += min(abs(a[i].x-m1),abs(a[i].y-m1))*2; } m2 = (long)ceil(med); r2 = res; for(i = 1; i <= n; i++){ if(m2 >= a[i].x && m2 <= a[i].y) continue; r2 += min(abs(a[i].x-m2),abs(a[i].y-m2))*2; } if(r1 < r2){ if(in[m1] + out[m1] == 0){ return 136; } } else if(r1 > r2){ if(in[m2] + out[m2] == 0){ return 136; } } else{ if(in[m1] + out[m1] == 0 && in[m2] + out[m2] == 0){ return 136; } } printf("%lld\n",min(r1,r2)); /*l = r = 0; for(long x : pos){ res += x*2*in[x]; r += in[x]; } y = 0; for(long x : pos){ res -= (x-y)*r*2; res += (x-y)*l*2; r -= in[x]; l += out[x]; mn = min(mn,res); y = x; } printf("%lld\n",mn);*/ return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 4 ms | 3448 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 4 ms | 3556 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 4 ms | 3624 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 4 ms | 3624 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 5 ms | 3680 KB | Execution failed because the return code was nonzero |
2 | Halted | 0 ms | 0 KB | - |