제출 #571145

#제출 시각아이디문제언어결과실행 시간메모리
571145sentheta콤보 (IOI18_combo)C++17
5 / 100
1 ms208 KiB
#include "combo.h"
#include<bits/stdc++.h>
using namespace std;

#define V vector
#define rep(i,a,b) for(int i=(a); i<(b); i++)



#define sz (int)s.size()

string guess_sequence(int n){
	V<string> arr = {"A","B","X","Y"};


	string s;

	// find first char
	{
		int ax = press("AX"), bx = press("BX");

		if(ax && bx) s = "X";
		else if(ax) s = "A";
		else if(bx) s = "B";
		else s = "Y";
	}
	// put s[0] as last char
	{
		int i = 0;
		while(arr[i] != s) i++;
		swap(arr[i], arr[3]);
	}
	assert(s == arr[3]);

	//cout << s << endl;

	while(sz < n-1){
		string t = ""
			+ s + arr[0] + arr[0]
			+ s + arr[0] + arr[1]
			+ s + arr[0] + arr[2]
			+ s + arr[1]
		;

		assert((int)t.size() <= 4*n);
		//cout << t << endl;
		int len = press(t);

		if(len==sz) s += arr[2];
		else if(len==sz+1) s += arr[1];
		else s += arr[0];
	}

	//assert(sz == n-1);

	// last char
	string t = s + arr[0] + s + arr[1];
	if(press(t) > sz){
		t = s + arr[0];

		if(press(t) > sz) s += arr[0];
		else s += arr[1];
	}
	else s += arr[2];

	//assert(sz == n);
	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...