Submission #1029617

#TimeUsernameProblemLanguageResultExecution timeMemory
1029617parsadox2Combo (IOI18_combo)C++17
100 / 100
20 ms1908 KiB
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

char c[4];
string res;

void Add()
{
	string s = "";
	for(int i = 0 ; i < 3 ; i++)
	{
		s += res;
		s.push_back(c[0]);
		s.push_back(c[i]);
	}
	s += res;
	s.push_back(c[1]);
	s.push_back(res[0]);
	int tmp = press(s);
	int sz = res.size();
	if(tmp == sz + 2)
		res.push_back(c[0]);
	else if(tmp == sz + 1)
		res.push_back(c[1]);
	else
		res.push_back(c[2]);
}

string guess_sequence(int n)
{
	int a1 = press("AB") , a2 = press("AX");
	if(a1 > 0 && a2 > 0)
	{
		c[0] = 'B';
		c[1] = 'X';
		c[2] = 'Y';
		res.push_back('A');
	}
	else if(a1 > 0)
	{
		c[0] = 'A';
		c[1] = 'X';
		c[2] = 'Y';
		res.push_back('B');
	}
	else if(a2 > 0)
	{
		c[0] = 'A';
		c[1] = 'B';
		c[2] = 'Y';
		res.push_back('X');
	}
	else
	{
		c[0] = 'A';
		c[1] = 'B';
		c[2] = 'X';
		res.push_back('Y');
	}
	if(n == 1)
		return res;
	for(int i = 1 ; i + 2 <= n ; i++)
		Add();
	string s1 = res + c[0] , s2 = res + c[1];
	a1 = press(s1);  a2 = press(s2);
	if(a1 == n)
		return s1;
	else if(a2 == n)
		return s2;
	res.push_back(c[2]);
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...