# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
557702 |
2022-05-05T21:57:19 Z |
sidon |
Towns (IOI15_towns) |
C++17 |
|
25 ms |
616 KB |
#include <bits/stdc++.h>
#include "towns.h"
using namespace std;
int hubDistance(int N, int _) {
int d[200][200] {}, x {};
for(int i = 1; i < N; ++i)
if((d[0][i] = getDistance(0, i)) > d[0][x])
x = i;
int y = x;
for(int i = 0; i < N; ++i)
if((d[x][i] = getDistance(x, i)) > d[x][y])
y = i;
int R = 1e6, c[N], h = -1;
array<int, 2> cR {R};
for(int i = 0; i < N; ++i) {
c[i] = (d[x][i] - d[0][i] + d[0][x]) / 2;
R = min(R, max(c[i], d[x][y] - c[i]));
if(i && i != x) {
cR[0] = min(cR[0], c[i]);
cR[1] = max(cR[1], c[i]);
}
}
for(int i = 0; i < N; ++i) if(R == max(c[i], d[x][y] - c[i])) {
int cnt[2] {};
for(int j = 0; j < N; ++j) if(c[i] != c[j])
++cnt[c[j] > c[i]];
while(!(cnt[0] + cnt[1]));
if(max(cnt[0], cnt[1]) <= N/2) h = i;
}
if(h < 0) return -R;
c[0] = cR[1], c[x] = cR[0];
d[x][x] = 2 * c[x];
auto same = [&](int i, int j) {
return i == j || getDistance(i, j) < d[x][i] + d[x][j] - 2 * c[h];
};
int cnt {}, val {}, w[N] {};
map<int, bool> bad;
for(int i = 0; i < N; ++i) if(c[i] == c[h]) {
if(!cnt) val = i, bad.clear();
if(same(i, val)) ++cnt, ++w[val];
else --cnt, w[i] = 1, bad[i] = 1;
}
cnt = 0;
for(int i = 0; i < N; ++i)
if(!bad[i] && w[i] && same(i, val)) cnt += w[i];
return cnt > N/2 ? -R : R;
}
Compilation message
towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:5:28: warning: unused parameter '_' [-Wunused-parameter]
5 | int hubDistance(int N, int _) {
| ~~~~^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
596 KB |
Output is correct |
2 |
Correct |
14 ms |
596 KB |
Output is correct |
3 |
Correct |
1 ms |
468 KB |
Output is correct |
4 |
Correct |
14 ms |
508 KB |
Output is correct |
5 |
Correct |
14 ms |
560 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
532 KB |
Output is correct |
2 |
Correct |
11 ms |
544 KB |
Output is correct |
3 |
Correct |
13 ms |
568 KB |
Output is correct |
4 |
Correct |
13 ms |
572 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
17 ms |
616 KB |
Output is correct |
2 |
Correct |
16 ms |
556 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
25 ms |
616 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
588 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
468 KB |
Output is correct |
2 |
Correct |
14 ms |
596 KB |
Output is correct |
3 |
Correct |
15 ms |
544 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
10 ms |
596 KB |
Output is correct |
2 |
Correct |
17 ms |
608 KB |
Output is correct |
3 |
Correct |
15 ms |
596 KB |
Output is correct |