Submission #1168173

#TimeUsernameProblemLanguageResultExecution timeMemory
1168173HappyCapybaraTowns (IOI15_towns)C++20
35 / 100
10 ms328 KiB
#include "towns.h" #include<bits/stdc++.h> using namespace std; int hubDistance(int N, int sub) { vector<int> d1(N, 0), d2(N, 0); int bsf = 0, f1, f2; for (int i=1; i<N; i++){ int d = getDistance(0, i); if (d > bsf){ bsf = d; f1 = i; } } bsf = 0; for (int i=0; i<N; i++){ if (i == f1) continue; int d = getDistance(f1, i); d1[i] = d; if (d > bsf){ bsf = d; f2 = i; } } int R = pow(10, 9); map<int,int> m; for (int i=0; i<N; i++){ if (i == f1 || i == f2) continue; int d = getDistance(f2, i); d2[i] = d; int l = (d1[i]+d2[i]-bsf)/2; R = min(R, max(d1[i], d2[i])-l); m[d1[i]-l]++; } bool bal = false; for (auto it=m.begin(); it != m.end(); it++){ if (it->first == R || it->first == bsf-R){ int x1 = 1, x2 = it->second, x3 = 1; for (auto jt=m.begin(); jt != it; jt++) x1 += jt->second; for (auto jt=next(it); jt != m.end(); jt++) x3 += jt->second; //cout << x1 << " " << x2 << " " << x3 << endl; if (x1 <= N/2 && x2 <= N/2 && x3 <= N/2) bal = true; } } if (bal) return R; else return -R; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...