제출 #349169

#제출 시각아이디문제언어결과실행 시간메모리
349169zggf콤보 (IOI18_combo)C++14
94 / 100
48 ms520 KiB
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

string guess_sequence(int N) {

	char firstLetter='X';
	if(press("X")) firstLetter = 'X';
	else if(press("Y")) firstLetter = 'Y';
	else if(press("A")) firstLetter = 'A';
	else firstLetter = 'B';

	string wyn = "";
	wyn.push_back(firstLetter);
	for(int i = 1; i < N-1; i++){
		if(firstLetter=='A'){
			int tmp = press(wyn+"X"+wyn+"YX"+wyn+"YB"+wyn+"YY");
			if(tmp==(int)wyn.size()){
				wyn.push_back('B');	
			}else if(tmp==(int)wyn.size()+1){
				wyn.push_back('X');	
			}else wyn.push_back('Y');
		}
		if(firstLetter=='B'){
			int tmp = press(wyn+"X"+wyn+"YX"+wyn+"YA"+wyn+"YY");
			if(tmp==(int)wyn.size()){
				wyn.push_back('A');	
			}else if(tmp==(int)wyn.size()+1){
				wyn.push_back('X');	
			}else wyn.push_back('Y');
		}
		if(firstLetter=='X'){
			int tmp = press(wyn+"B"+wyn+"YB"+wyn+"YA"+wyn+"YY");
			if(tmp==(int)wyn.size()){
				wyn.push_back('A');	
			}else if(tmp==(int)wyn.size()+1){
				wyn.push_back('B');	
			}else wyn.push_back('Y');
		}
		if(firstLetter=='Y'){
			int tmp = press(wyn+"B"+wyn+"XB"+wyn+"XA"+wyn+"XX");
			if(tmp==(int)wyn.size()){
				wyn.push_back('A');	
			}else if(tmp==(int)wyn.size()+1){
				wyn.push_back('B');	
			}else wyn.push_back('X');
		}
	}

	if(N>1){
		char lastLetter;
		if(firstLetter!='X'&&press(wyn+"X")==N) lastLetter = 'X';
		else if(firstLetter!='Y'&&press(wyn+"Y")==N) lastLetter = 'Y';
		else if(firstLetter!='A'&&press(wyn+"A")==N) lastLetter = 'A';
		else lastLetter = 'B';
		wyn.push_back(lastLetter);
	}
	return wyn;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...