제출 #623115

#제출 시각아이디문제언어결과실행 시간메모리
623115l_reho콤보 (IOI18_combo)C++14
10 / 100
57 ms488 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"};

	for(int i = 0; i < 4; i++){
		int ret = press(voc[i]);
		if(ret == 1){
			guess = voc[i];
			break;
		}
	}
	
	voc.erase(find(voc.begin(), voc.end(), guess));
	
	
	for(int i = 1; i < N; i++){
		
		int low = 0;
		int high = 3;
		string v = "";
		while(low <= high){
			int mid = low + (high-low)/2;
			
			string left = "";
			for(int j = low; j <= mid; j++)
				left += guess + voc[j];
			
			if(press(left) == (int)guess.length()+1){
				v = voc[mid];
				
				high = mid-1;
			}else{
				low = mid+1;
			}
			
		}
		
		guess += v;
		
		/*
		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;
			}
			
		}
		*/
		
	}
	
	return guess;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...