답안 #447212

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
447212 2021-07-25T06:36:39 Z jwvg0425 카멜레온의 사랑 (JOI20_chameleon) C++17
0 / 100
0 ms 200 KB
#include "chameleon.h"
#include <vector>

using namespace std;

vector<int> con[1005];
bool visit[1005];
bool answered[1005];
int l[1005];

void Solve(int N)
{
	for (int i = 1; i <= 2 * N; i++)
	{
		for (int j = i + 1; j <= 2 * N; j++)
		{
			if (i == j)
				continue;

			auto q = Query({ i, j });
			if (q == 1)
			{
				con[i].push_back(j);
				con[j].push_back(i);
			}
		}
	}

	for (int i = 1; i <= 2 * N; i++)
	{
		if (visit[i])
			continue;

		if (con[i].size() == 1)
		{
			Answer(i, con[i][0]);
			visit[i] = visit[con[i][0]] = true;
			continue;
		}

		if (con[con[i][0]].size() == 1)
		{
			Answer(i, con[i][0]);
			visit[i] = visit[con[i][0]] = true;
			answered[i] = answered[con[i][0]] = true;
		}
		else if (con[con[i][1]].size() == 1)
		{
			Answer(i, con[i][1]);
			visit[i] = visit[con[i][1]] = true;
			answered[i] = answered[con[i][1]] = true;
		}
		else if (con[con[i][2]].size() == 1)
		{
			Answer(i, con[i][2]);
			visit[i] = visit[con[i][2]] = true;
			answered[i] = answered[con[i][2]] = true;
		}
		else
		{
			vector<int> a = { i, con[i][0], con[i][1] };
			vector<int> b = { i, con[i][0], con[i][2] };
			vector<int> c = { i, con[i][1], con[i][2] };

			auto aq = Query(a);
			auto bq = Query(b);
			auto cq = Query(c);

			if(aq == 1)
			{
				visit[i] = true;
				l[i] = con[i][2];
			}
			else if (bq == 1)
			{
				visit[i] = true;
				l[i] = con[i][1];
			}
			else
			{
				visit[i]  = true;
				l[i] = con[i][0];
			}
		}
	}

	for (int i = 1; i <= 2 * N; i++)
	{
		if (answered[i])
			continue;

		for (auto& c : con[i])
		{
			if (c == l[i] || l[c] == i || answered[c])
				continue;

			Answer(i, c);
			answered[i] = answered[c] = true;
			break;
		}
	}
}

Compilation message

chameleon.cpp: In function 'void Solve(int)':
chameleon.cpp:67:9: warning: unused variable 'cq' [-Wunused-variable]
   67 |    auto cq = Query(c);
      |         ^~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -