제출 #1365027

#제출 시각아이디문제언어결과실행 시간메모리
1365027retr0foxx가장 긴 여행 (IOI23_longesttrip)C++20
5 / 100
4 ms344 KiB
#include "longesttrip.h"
#include <deque>

int center(int x, int y, int z)
{
	if (are_connected(std::vector<int>{x}, std::vector<int>{y}) && are_connected(std::vector<int>{x}, std::vector<int>{z}))
		return x;
	
	if (are_connected(std::vector<int>{y}, std::vector<int>{x}) && are_connected(std::vector<int>{y}, std::vector<int>{z}))
		return y;
	
	if (are_connected(std::vector<int>{z}, std::vector<int>{x}) && are_connected(std::vector<int>{z}, std::vector<int>{y}))
		return z;

	int xq = are_connected(std::vector<int>{x}, std::vector<int>{y});
	int yq = are_connected(std::vector<int>{x}, std::vector<int>{z});
	int zq = are_connected(std::vector<int>{y}, std::vector<int>{z});
	
	if (xq && yq) return x;
	if (xq && zq) return y;
	if (yq && zq) return z;
	return -1;
}

std::vector<int> longest_trip(int N, int D)
{
	std::deque<int> umm;
	
	int cn = center(0, 1, 2);
	if (cn == 0)
		umm.insert(umm.end(), {1, 0, 2});
	if (cn == 1)
		umm.insert(umm.end(), {0, 1, 2});
	if (cn == 2)
		umm.insert(umm.end(), {0, 2, 1});
	
	for (int i = 3; i < N; ++i)
	{
		int cnt = center(umm.back(), umm.front(), i);
		if (cnt == i)
			umm.push_back(i);
		if (cnt == umm.front())
			umm.push_front(i);
		if (cnt == umm.back())
			umm.push_back(i);
	}
	
	std::vector<int> fres;
	for (int i = 0; i < umm.size(); ++i)
		fres.push_back(umm[i]);

	return fres;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…