Submission #139701

#TimeUsernameProblemLanguageResultExecution timeMemory
139701ekremCombo (IOI18_combo)C++17
100 / 100
229 ms2728 KiB

#include "combo.h"
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define sol (k+k)
#define sag (k+k+1)
#define orta ((bas+son)/2)
#define coc g[node][i]
#define mod 1000000007
#define inf 1000000009
#define MAXN 1000005
using namespace std;

typedef long long ll;
typedef pair < int , int > ii;

int n, m, ilk;
map < int , string > h, x;

string guess_sequence(int n) {
	h[1] = "A";
	h[2] = "B";
	h[3] = "X";
	h[4] = "Y";
	if(press(h[1] + h[2])){
		if(press(h[1]))
			ilk = 1;
		else
			ilk = 2;
	} else{
		if(press(h[3]))
			ilk = 3;
		else
			ilk = 4;
	}
	// for(int i = 1; i <= 4; i++){
	// 	if(press(h[i]) > 0){
	// 		ilk = i;
	// 		break;
	// 	}
	// }

	string s = "";
	// cout << s << endl;
	s += h[ilk];
	if(n == 1)
		return s;
	// cout << s << endl;
	for(int i = 1; i <= 4; i++){
		if(i == ilk)continue;
		x[++m] = h[i];
	}
	// cout << n << " " << ilk << " " << s << endl;
	for(int i = 2; i <= n - 1; i++){
		string sor = "";
		sor += s;sor += x[1];sor += x[1];
		sor += s;sor += x[1];sor += x[2];
		sor += s;sor += x[1];sor += x[3];
		sor += s;sor += x[2];
		// cout << n << " " << sor.size() << " " << sor << endl;
		int ans = press(sor);
		if(ans == i)
			s += x[2];
		else if(ans == i + 1)
			s += x[1];
		else
			s += x[3];
	}
	if(press(s + x[1] + s + x[2]) == n){
		if(press(s + x[1]) == n)
			s += x[1];
		else
			s += x[2];
	} else
		s += x[3];
	// for(int i = 1; i <= 3; i++){
	// 	if(press(s + x[i]) == n){
	// 		s += x[i];
	// 		break;
	// 	}
	// }
	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...