Submission #1343531

#TimeUsernameProblemLanguageResultExecution timeMemory
1343531NAMINCombo (IOI18_combo)C++20
0 / 100
1 ms412 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;

string guess_sequence(int N){
	vector<char> caras{'A','B','X','Y'};
	string res = "";
	if(press("AB")==1){
		if(press("A")==1)
			res += 'A';
		else
			res += 'B';
	}
	else{
		if(press("X"))
			res += 'X';
		else
			res += 'Y';
	}
	if(N==1)
		return res;

	caras.erase(find(caras.begin(),caras.end(),res[0]));
	for(int len=2;len<=N-1;len++){
		string nxt = res+caras[0];
		for(char c : caras){
			for(int i=0;i<(int)res.size();i++){
				nxt += res[i];
			}
			nxt += caras[1];
			nxt += c;
		}
		int preflen = press(nxt);
		if(preflen==len-1){
			res += caras[2];
		}
		else if(preflen==len){
			res += caras[0];
		}
		else{
			assert(preflen==len+1);
			res += caras[1];
		}
	}
	assert((int)res.size()==N-1);
	string nxt = res+'A';
	for(char c : res)
		nxt += c;
	nxt += 'B';
	if(press(nxt)==N){
		nxt = res+'A';
		if(press(nxt)==N)
			res += 'A';
		else
			res += 'B';
	}
	else{
		nxt = res+'X';
		if(press(nxt))
			res += 'X';
		else
			res += 'Y';
	}
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...