답안 #1018719

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1018719 2024-07-10T08:54:39 Z parsadox2 도시들 (IOI15_towns) C++17
35 / 100
11 ms 1112 KB
#include "towns.h"
#include <bits/stdc++.h>

#define F first
#define S second

using namespace std;

const int N = 1e2 + 20;
int n , dis[N][N] , r[N] , L[N] , R[N];

bool Solve(int D)
{
	int lef = 0 , rig = 0 , mid = 0;
	for(int x = 0 ; x < n ; x++)
	{
		if(L[x] < D)
			lef++;
		else if(L[x] > D)
			rig++;
		else
			mid++;
	}
	//cout << D << " : " << lef << " " << mid << " " << rig << endl;
	return (lef <= n / 2 && rig <= n/2 && mid <= n / 2);
}

int hubDistance(int nn , int sub) {
	n = nn;
	pair <int , int> D = make_pair(0 , 1);
	for(int i = 1 ; i < n ; i++)
	{
		dis[0][i] = dis[i][0] = getDistance(0 , i);
		if(dis[0][i] > dis[D.F][D.S])
			D = make_pair(0 , i);
	}
	for(int i = 0 ; i < n ; i++)  if(i != D.S)
	{
		dis[i][D.S] = dis[D.S][i] = getDistance(i , D.S);
		if(dis[i][D.S] > dis[D.F][D.S])
			D = make_pair(i , D.S);
	}
	int ans = dis[D.F][D.S];
	for(int x = 0 ; x < n ; x++)
	{
		dis[x][D.F] = dis[D.F][x] = getDistance(x , D.F);
		r[x] = (dis[x][D.F] + dis[x][D.S] - dis[D.F][D.S]) / 2;
		L[x] = dis[x][D.F] - r[x];
		R[x] = dis[x][D.S] - r[x];
		//cout << x << " : " << L[x] << " " << R[x] << endl;
		ans = min(ans , max(L[x] , R[x]));
	}
	ans = -ans;
	for(int x = 0 ; x < n ; x++)  if(L[x] == abs(ans) || R[x] == abs(ans))
		if(Solve(L[x]))
			ans = abs(ans);
	return ans;
}

Compilation message

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:28:30: warning: unused parameter 'sub' [-Wunused-parameter]
   28 | int hubDistance(int nn , int sub) {
      |                          ~~~~^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 1112 KB Output is correct
2 Correct 7 ms 860 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 10 ms 968 KB Output is correct
5 Correct 10 ms 904 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 344 KB Output is correct
2 Correct 7 ms 860 KB Output is correct
3 Correct 9 ms 840 KB Output is correct
4 Correct 10 ms 856 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 860 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -