# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
432002 | arayi | 도시들 (IOI15_towns) | C++17 | 18 ms | 400 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "towns.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 150;
int n;
int d[N][N];
int hubDistance(int N, int sub)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) d[i][j] = 0;
n = N;
int a = 0;
for (int i = 1; i < n; i++)
{
d[0][i] = d[i][0] = getDistance(0, i);
if(d[0][i] > d[0][a]) a = i;
}
int b = 0;
for (int i = 1; i < n; i++)
{
if(a == i) continue;
d[a][i] = d[i][a] = getDistance(a, i);
if(d[a][i] > d[a][b]) b = i;
}
int pat = d[a][b];
int sm = (d[a][0] + d[0][b] - d[a][b]) / 2;
sm = d[a][0] - sm;
pat = min(pat, max(sm, d[a][b] - sm));
for (int i = 0; i < n; i++)
{
if(i == a || i == b) continue;
if(b == 0 || i == 0)
{
int c = (d[a][i]+d[i][b] - d[a][b]) / 2;
pat = min(pat, max(d[a][i], d[i][b]) - c);
}
else
{
int l = (d[a][0] + d[0][i] - d[a][i]) / 2;
l = d[a][i] - l;
if(sm >= l)
{
int c = d[a][0] + d[a][i] - d[0][i] - sm;
pat = min(pat, max(c, d[a][b] - c));
}
}
}
return pat;
}
컴파일 시 표준 에러 (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... |