This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#ifdef NYAOWO
#include "grader.cpp"
#endif
#include "towns.h"
#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i, a, b) for(int i = a; i >= b; i--)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define sz(x) ((int)x.size())
#define eb emplace_back
#define int LL
using namespace std;
using LL = long long;
using pii = pair<int, int>;
map<pii, int> mem;
int dist(int a, int b) {
if(a > b) swap(a, b);
pii p(a, b);
if(mem.count(p)) return mem[p];
mem[p] = getDistance((int32_t)a, (int32_t)b);
return mem[p];
}
int32_t hubDistance(int32_t N, int32_t sub) {
// remember to init!
mem.clear();
int dia = 0;
int p1 = 0;
For(i, 1, N - 1) {
int d = dist(i, 0);
if(d > dia) {
dia = d;
p1 = i;
}
}
dia = 0;
int p2 = p1;
For(i, 0, N - 1) {
int d = dist(p1, i);
if(d > dia) {
dia = d;
p2 = i;
}
}
map<int, int> cnt;
For(i, 0, N - 1) if(i != p1 && i != p2) {
int d1 = dist(p1, i);
int d2 = dist(p2, i);
cnt[(dia + d1 - d2) / 2]++;
}
int mn = dia;
for(auto &i:cnt) {
mn = min(mn, max(i.F, dia - i.F));
}
return (int32_t)mn;
}
Compilation message (stderr)
towns.cpp: In function 'int32_t hubDistance(int32_t, int32_t)':
towns.cpp:29:40: warning: unused parameter 'sub' [-Wunused-parameter]
29 | int32_t hubDistance(int32_t N, int32_t sub) {
| ~~~~~~~~^~~
# | 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... |