Submission #1247119

#TimeUsernameProblemLanguageResultExecution timeMemory
1247119countlessTowns (IOI15_towns)C++20
0 / 100
10 ms328 KiB
#include "towns.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define sp <<" "<< #define endl "\n" map<pair<int, int>, ll> memo; ll query(int i, int j) { if (i == j) return 0; if (i > j) swap(i, j); if (memo.count({i, j})) return memo[{i, j}]; return memo[{i, j}] = getDistance(i, j); } int hubDistance(int N, int sub) { ll best = LLONG_MAX; ll mn, fir = -1, sec = -1, mid = -1; mn = -1; for (int i = 0; i < N; i++) { ll curr = query(0, i); if (curr > mn) { mn = curr; fir = i; } } mn = -1; for (int i = 0; i < N; i++) { ll curr = query(fir, i); if (curr > mn) { mn = curr; sec = i; } } ll dia = mn; mn = LLONG_MAX; for (int i = 0; i < N; i++) { ll curr = (query(fir, i) + query(sec, i) - query(fir, sec)) / 2; ll cand = abs(curr - 2LL * query(fir, sec)); if (cand < mn) { mn = cand; mid = i; } } ll AB = query(fir, sec); ll BC = query(sec, mid); ll CA = query(mid, fir); ll ABC = (AB+BC+CA) / 2; ll A = ABC-BC, B = ABC-CA, C = ABC-AB; return max({A, B, C}); }
#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...