Submission #211009

#TimeUsernameProblemLanguageResultExecution timeMemory
211009Seanliu콤보 (IOI18_combo)C++14
94 / 100
99 ms628 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";
	} else {
		current = "B";
		r = press(current);
		if(r == 1){
			c = "BAXY";
		} else {
			current = "X";
			r = press(current);
			if(r == 1){
				c = "XBAY";
			} else {
				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;
	}
	if(N == 1){
		tmp.push_back(0);
		return getStr();
	}
	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...