# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
434011 | qwerasdfzxcl | Towns (IOI15_towns) | C++14 | 24 ms | 460 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "towns.h"
#include <bits/stdc++.h>
using namespace std;
int dist[111][111], n;
int hubDistance(int N, int sub) {
n = N;
for (int i=0;i<n;i++) fill(dist[i], dist[i]+n, 0);
for (int i=1;i<n;i++) dist[0][i] = getDistance(0, i);
int a = 0, b = max_element(dist[0], dist[0]+n) - dist[0];
for (int i=1;i<n;i++) if (i!=b) dist[b][i] = getDistance(b, i);
set<int> st;
for (int i=1;i<n;i++) if (i!=b){
st.insert(dist[a][b]-dist[b][i]+(dist[a][i]+dist[b][i]-dist[a][b])/2);
}
int ret = dist[a][b];
for (auto &x:st){
int tmp = max(x, dist[a][b]-x);
for (int i=1;i<n;i++){
int y = dist[a][b]-dist[b][i]+(dist[a][i]+dist[b][i]-dist[a][b])/2;
int z = dist[a][b] - y;
if (y<=x) tmp = max(tmp, dist[a][i]-y+(x-y));
else tmp = max(tmp, dist[b][i]-z+(dist[a][b]-x-z));
//printf("%d ", tmp);
}
//printf("\n");
ret = min(ret, tmp);
}
return ret;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |