提出 #461905


ソースコード 拡げる

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

class judge
{
public:
	int ID;
	bool if_good;
};

int Max = -1;
int MaxAnswer = 0;
judge judge_list[20];
bool solve(vector<int> true_list, int n, int ID);

int main()
{
	int n;
	cin >> n;
	string name;
	vector<string> namelist;
	vector<string> prenamelist;
	for(int i = 0; i < n; i++)
	{
		cin >> name;
		namelist.push_back(name);
		prenamelist.push_back(name);
	}
	sort(namelist.begin(),namelist.end());
	for(int i = 0; i < n; i++)
	{
		int ID;
		for(int j =0 ;j <n; j++)
		{
			if(prenamelist[i] == namelist[j])
			{
				ID = j;
				break;
			}
		}
		cin >> name;
		for(int j = 0; j < n; j++)
			if(name == namelist[j])
				judge_list[ID].ID = j;
		cin >> name;
		cin >> name;
		cin >> name;
		if(name == "good")
			judge_list[ID].if_good = true;
		else
			judge_list[ID].if_good = false;
		cin >> name;
	}
	
	
	vector<int> true_list;
	for(int i = 0; i < n; i ++)
		true_list.push_back(-1);
	true_list[0] = true;
	solve(true_list,n,0);
	true_list[0] = false;
	solve(true_list,n,0);
	
	if(Max == -1)
	{
		cout << "No answers" << endl;
	}
	else
	{
		for(int i = 0 ; i < n; i++)
		{
			if(MaxAnswer % 2 == 1)
				true_list[n-i-1] = 1;
			else
				true_list[n-i-1] = 0;
			MaxAnswer /= 2;
		}
		for(int i = 0 ; i< n; i++)
			if(true_list[i])
				cout << namelist[i] << endl;
	}

}


bool solve(vector<int> true_list, int n, int ID)
{
	int nextID = -1;
	
	if(true_list[judge_list[ID].ID] != -1)
	{
		if(true_list[ID])
			if(true_list[judge_list[ID].ID] != judge_list[ID].if_good)
				return false;
		if(!true_list[ID])
			if(true_list[judge_list[ID].ID] == judge_list[ID].if_good)
				return false;
	}
	int answer_size = 0;
	int answer = 0;
	for(int i = 0; i < n; i++)
	{
		answer += true_list[i];
		answer *= 2;
		if(true_list[i] == -1)
		{
			if(nextID == -1)
				nextID = i;
			break;
		}
		if(true_list[i] == true)
			answer_size++;
		if(i == n-1)
		{
			answer /= 2;
			if(answer_size >= Max)
			{
				if(Max == answer_size)
				{
					if(MaxAnswer <= answer)
					{
						MaxAnswer = answer;
						
					}
				}
				else
				{
					MaxAnswer = answer;
					Max = answer_size;
				}
			}
			return 1;
		}
	}
	
	
	if(true_list[judge_list[ID].ID] == -1)
	{
		nextID = judge_list[ID].ID;

		if(true_list[ID] == true)
			true_list[judge_list[ID].ID] = judge_list[ID].if_good;
		if(true_list[ID] == false)
			true_list[judge_list[ID].ID] = !(judge_list[ID].if_good);
		solve(true_list,n,nextID);
	}
	else
	{
	
		true_list[nextID] = true;
		solve(true_list, n, nextID);
		true_list[nextID] = false;
		solve(true_list, n, nextID);
	}	
	
	

	
}

提出情報

提出日時
問題 C - 酒場の冒険者たち
ユーザ kuromunori
言語 C++ (GCC 4.9.2)
得点 100
コード長 2800 Byte
結果 AC
実行時間 273 ms
メモリ 928 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 27
セット名 テストケース
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_max_00.txt, 01_max_01.txt, 05_corner_00.txt, 05_corner_01.txt, 05_corner_02.txt, 10_min_00.txt, 10_min_01.txt, 10_min_02.txt, 10_wrong_answer_00.txt, 20_max_00.txt, 20_max_01.txt, 20_max_02.txt, 90_random_00.txt, 90_random_01.txt, 90_random_02.txt, 90_random_03.txt, 90_random_04.txt, 90_random_05.txt, 90_random_06.txt, 90_random_07.txt, 90_random_08.txt, 90_random_09.txt, 99_medium_00.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 26 ms 796 KiB
00_sample_01.txt AC 25 ms 804 KiB
00_sample_02.txt AC 25 ms 804 KiB
00_sample_03.txt AC 25 ms 796 KiB
01_max_00.txt AC 273 ms 924 KiB
01_max_01.txt AC 38 ms 732 KiB
05_corner_00.txt AC 32 ms 916 KiB
05_corner_01.txt AC 26 ms 804 KiB
05_corner_02.txt AC 31 ms 920 KiB
10_min_00.txt AC 26 ms 728 KiB
10_min_01.txt AC 28 ms 920 KiB
10_min_02.txt AC 27 ms 916 KiB
10_wrong_answer_00.txt AC 28 ms 924 KiB
20_max_00.txt AC 27 ms 808 KiB
20_max_01.txt AC 27 ms 808 KiB
20_max_02.txt AC 27 ms 804 KiB
90_random_00.txt AC 26 ms 796 KiB
90_random_01.txt AC 27 ms 804 KiB
90_random_02.txt AC 25 ms 928 KiB
90_random_03.txt AC 26 ms 800 KiB
90_random_04.txt AC 26 ms 796 KiB
90_random_05.txt AC 26 ms 804 KiB
90_random_06.txt AC 26 ms 928 KiB
90_random_07.txt AC 26 ms 928 KiB
90_random_08.txt AC 27 ms 800 KiB
90_random_09.txt AC 26 ms 676 KiB
99_medium_00.txt AC 26 ms 800 KiB