Submission #211006

#TimeUsernameProblemLanguageResultExecution timeMemory
211006SeanliuCombo (IOI18_combo)C++14
5 / 100
1 ms200 KiB
#include <string>
#include "combo.h"
#include <vector>
#include <deque>
using namespace std;

const int maxN = 2e3 + 10;

int ans[maxN];
string c;
vector<int> tmp;

string getStr(){
	string s = "";
	for(int x : tmp) s += c[x];
	return s;
}

std::string guess_sequence(int N) {
	int r;
	c = "";
	string current = "A";
	r = press(current);
	if(r == 1){
		c = "ABXY";
	}
	current = "B";
	r = press(current);
	if(r == 1){
		c = "BAXY";
	}
	current = "X";
	r = press(current);
	if(r == 1){
		c = "XBAY";
	}
	if(c == "") c = "YABX";
	for(int i = 1; i < N - 1; i++){
		tmp.clear();
		for(int j = 0; j < i; j++) tmp.push_back(ans[j]);
		tmp.push_back(1);
		for(int j = 0; j < i; j++) tmp.push_back(ans[j]);
		tmp.push_back(2);
		tmp.push_back(1);
		for(int j = 0; j < i; j++) tmp.push_back(ans[j]);
		tmp.push_back(2);
		tmp.push_back(2);
		for(int j = 0; j < i; j++) tmp.push_back(ans[j]);
		tmp.push_back(2);
		tmp.push_back(3);
		r = press(getStr());
		if(r == i) ans[i] = 3;
		else if(r == i + 1) ans[i] = 1;
		else ans[i] = 2;
	}
	for(int i = 1; i < 4; i++){
		tmp.clear();
		for(int j = 0; j < N - 1; j++) tmp.push_back(ans[j]);
		tmp.push_back(i);
		if(press(getStr()) == N) return getStr();
	}
	return getStr();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...