Submission #536366

#TimeUsernameProblemLanguageResultExecution timeMemory
536366KoD도시들 (IOI15_towns)C++17
25 / 100
17 ms1100 KiB
#include <bits/stdc++.h>
#include "towns.h"

using std::vector;
using std::array;
using std::pair;
using std::tuple;

int hubDistance(int N, int sub) {
	std::map<pair<int, int>, int> memo;
	const auto dist = [&](const int i, const int j) {
		assert(0 <= i and i < N);
		assert(0 <= j and j < N);
		if (i == j) return 0;
		const auto p = std::minmax(i, j);
		if (const auto itr = memo.find(p); itr != memo.end()) return itr->second;
		return memo[p] = getDistance(i, j);
	};
	
	int L = 0;
	for (int i = 1; i < N; ++i) {
		if (dist(0, L) < dist(0, i)) {
			L = i;
		}
	}

	int R = 0;
	for (int i = 1; i < N; ++i) {
		if (dist(L, R) < dist(L, i)) {
			R = i;
		}
	}

	const int len = dist(L, R);
	
	int ans = len;
	for (int i = 0; i < N; ++i) {
		const auto l = dist(L, i); 
		const auto r = dist(R, i);
		const auto d = (l + r - len) / 2;
		ans = std::min(ans, std::max(l - d, r - d)); 
	}

	return ans;
}

Compilation message (stderr)

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:9:28: warning: unused parameter 'sub' [-Wunused-parameter]
    9 | int hubDistance(int N, int sub) {
      |                        ~~~~^~~
#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...