Submission #1147455

#TimeUsernameProblemLanguageResultExecution timeMemory
1147455Kaztaev_AlisherCombo (IOI18_combo)C++20
5 / 100
20 ms484 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 = "";
	while(s.size() < N) s += "C";
	int cur = press("AB");
	if(cur == 2) {
		s[0] = 'A' , s[1] = 'B' , s1 = "BXY";
	} else if(cur == 1){
		cur = press("A");
		if(cur == 1) s[0] = 'A' , s1 = "BXY";
		else s[0] = 'B' , s1 = "AXY";
	} else {
		cur = press("X");
		if(cur == 1) s[0] = 'X' , s1 = "ABY";
		else s[0] = 'Y' , s1 = "ABX";
	}
	// cout << s  << "\n";
	// return s;
	while(1){
		int pos = -1 , pos2 = -1;
		for(int i = 0; i < s.size(); i++){
			if(s[i] == 'C' && pos == -1) pos = i;
			else if(s[i] == 'C'){
				pos2 = i;
				break;
			}
		}
		if(pos == -1) break;
		if(pos2 == -1){
			for(int j = 0; j < 3; j++){
				if(j == 2){
					s[pos] = s1[j];
				} else {
					s[pos] = s1[j];
					if(press(s) == s.size()) break;
				}
			}
			// break;
		} else {
			string nw = "";
			string nw2 = "";
			string nw3 = "";
			for(int i = 0; i <= pos2; i++){
				nw += s[i];
				nw2 += s[i];
				nw3 += s[i];
			}
			nw[pos] = s1[0] , nw[pos2] = s1[2];
			nw2[pos] = s1[1] , nw2[pos2] = s1[2];
			nw3[pos] = s1[2] , nw3[pos2] = s1[2];
			if(press(nw+nw2+nw3) == pos2+1){
				s[pos2] = s1[2];
				continue;
			}
			nw[pos2] = s1[1]; 
			nw2[pos2] = s1[1];
			int res = press(nw+nw2);
			if(res == pos2+1){
				s[pos2] = s1[1];
				continue;
			}
			if(res == pos+1){
				s[pos2] = s1[0];
				continue;
			}
			s[pos] = s1[2];
			continue;
		}
		// cout << s << "\n";
		// break;
	}
	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...