제출 #623458

#제출 시각아이디문제언어결과실행 시간메모리
623458l_reho콤보 (IOI18_combo)C++14
100 / 100
33 ms544 KiB
#include "combo.h"

#include<bits/stdc++.h>
using namespace std;

int press(std::string p);
std::string guess_sequence(int N) {
  
	// guess del primo carattere
	string guess = "A";
	vector<string> voc{"A", "B", "X", "Y"};
	// AABB se ritorna > 0 allora scarto le altre due
	
	string try1 = "AABB";
	
	int ret = press(try1);
	if(ret > 0){
		ret = press("A");
		if(ret == 1) guess = "A";
		else guess="B";
		
	}else{
		ret = press("X");
		if(ret == 1) guess = "X";
		else guess="Y";
	}
	

	
	voc.erase(find(voc.begin(), voc.end(), guess));
	
	
	for(int i = 1; i < N-1; i++){
		
		string v = guess + voc[0] + guess + voc[1] + voc[0] + guess + voc[1] + voc[1] + guess + voc[1] + voc[2];
		int ret = press(v);
		if(ret == (int)guess.length() + 1){
			guess += voc[0];
		}else if(ret == (int) guess.length() + 2)
			guess += voc[1];
		else guess += voc[2];
		
		
		/*
		for(int j = 0; j < 4; j++){
			if(voc[j][0] == guess[0]) continue;
			int ret = press(guess + voc[j]);	
			
			if(ret == (int)guess.length()+1){
				guess += voc[j];
				break;
			}
			
		}
		*/
		
	}

	if(N > 1){
		for(int i = 0; i < 2; i++){
			int ret = press(guess + voc[i]);	
				
			if(ret == N){
				guess += voc[i];
				break;
			}
		}
		
		if((int)guess.length()!= N) guess += voc[2];
	}
	
	return guess;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...