Submission #556764

#TimeUsernameProblemLanguageResultExecution timeMemory
556764blueTowns (IOI15_towns)C++17
0 / 100
17 ms980 KiB
#include "towns.h"
#include <vector>
#include <cmath>
#include <set>
using namespace std;

using vi = vector<int>;

int hubDistance(int N, int sub) 
{
	vi dist0(N);
	dist0[0] = 0;
	for(int i = 1; i < N; i++)
		dist0[i] = getDistance(0, i);

	int S = 0;
	for(int i = 1; i < N; i++)
		if(dist0[i] > dist0[S])
			S = i;

	int T, ST = 0; //diameter

	vi distS(N);
	distS[S] = 0;
	distS[0] = dist0[S];

	T = 0;
	ST = distS[0];

	for(int i = 1; i < N; i++)
	{
		if(i != S)
		{
			distS[i] = getDistance(S, i);

			if(distS[i] > ST)
			{
				ST = distS[i];
				T = i;
			}
		}
	}


	vi diam_dist(N);
	for(int i = 0; i < N; i++)
		diam_dist[i] = (distS[i] + dist0[i] - distS[0])/2;

	vi xcoord(N);
	for(int i = 0; i < N; i++)
		xcoord[i] = distS[i] - diam_dist[i];


	int best_diff = 5'000'000;
	set<int> best_coords;
	for(int i = 0; i < N; i++)
	{
		if(abs(2*xcoord[i] - ST) < best_diff)
		{
			best_coords.clear();
			best_diff = abs(2*xcoord[i] - ST);
		}
		
		if(abs(2*xcoord[i] - ST) == best_diff)
			best_coords.insert(xcoord[i]);
	}

	return *best_coords.rbegin();
}

Compilation message (stderr)

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:21:6: warning: variable 'T' set but not used [-Wunused-but-set-variable]
   21 |  int T, ST = 0; //diameter
      |      ^
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...