提出 #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 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |