Submission #1147468

#TimeUsernameProblemLanguageResultExecution timeMemory
1147468Kaztaev_Alisher콤보 (IOI18_combo)C++20
100 / 100
8 ms636 KiB
#include "combo.h"
#include <bits/stdc++.h>

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
#define all(a) a.begin() , a.end()
#define F first
#define S second

using namespace std;
using ll = long long;

const ll N = 1e6+5 , inf = 2e9 + 7 , block = 1000;
const ll INF = 1e18 ,   mod = 1e9+7;

string guess_sequence(int N) {
	string s = "";
	string s1 = "";
	int cur = press("AB");
	if(cur == 2) {
		s += "A" , s += "B" , s1 = "BXY";
	} else if(cur == 1){
		cur = press("A");
		if(cur == 1) s += "A" , s1 = "BXY";
		else s += "B" , s1 = "AXY";
	} else {
		cur = press("X");
		if(cur == 1) s += "X" , s1 = "ABY";
		else s += "Y" , s1 = "ABX";
	}

	while(s.size() < N){
		if(s.size()+1 == N){
			for(int j = 0; j < 3; j++){
				if(j == 2){
					s += s1[j];
				} else {
					s += s1[j];
					if(press(s) == s.size()) break;
					s.pop_back();
				}
			}
			continue;
		} else {
			string nw = s;
			string nw2 = s;
			string nw3 = s;
			string nw4 = s;
			nw += s1[0];
			nw2 += s1[1];
			nw2 += s1[0];
			nw3 += s1[1];
			nw3 += s1[1];
			nw4 += s1[1];
			nw4 += s1[2];
			int cur = press(nw+nw2+nw3+nw4);
			if(cur == nw2.size()){
				s += s1[1];
				continue;
			}
			if(cur == nw.size()){
				s += s1[0];
				continue;
			}
			s += s1[2];
			continue;
		}
	}
	// cout << s << "\n";
	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...