제출 #1217984

#제출 시각아이디문제언어결과실행 시간메모리
1217984islam_2010콤보 (IOI18_combo)C++20
94 / 100
7 ms484 KiB
#include <bits/stdc++.h>
using namespace std;

int press(string s); 

string guess_sequence(int n) {
	string s;
	string a[4];

	if (press("AB")) {
		if (press("A")) {
			s = "A";
			a[0] = "BB", a[1] = "BX", a[2] = "BY", a[3] = "X";
		} else {
			s = "B";
			a[0] = "AA", a[1] = "AX", a[2] = "AY", a[3] = "X";
		}
	} else {
		if (press("X")) {
			s = "X";
            a[0] = "BB", a[1] = "BA", a[2] = "BY", a[3] = "Y";
		} else {
			s = "Y";
            a[0] = "BB", a[1] = "BA", a[2] = "BX", a[3] = "X";
		}
		
	}

	if (n == 1) {
		return s;
	}

	for (int i = 1; i < n - 1; i++) {
		if(s[0]=='A') {
			string ns = s + a[0] + s + a[1] + s + a[2] + s + a[3];
			int x = press(ns);

			if (x == s.size()) {
				s += 'Y';
			} else if (x == s.size() + 1) {
				s += 'X';
			} else {
				s += 'B';
			}
		}else if(s[0]=='B'){
            string ns = s + a[0] + s + a[1] + s + a[2] + s + a[3];
			int x = press(ns);

            if(x==s.size()){
                s+="Y";
            }else if(x==s.size()+1){
                s+="X";
            }else {
                s+="A";
            }
        }else if(s[0]=='X'){
            string ns = s + a[0] + s + a[1] + s + a[2] + s + a[3];
			int x = press(ns);
            if(x==s.size()){
                s+="A";
            }else if(x==s.size()+1){
                s+="Y";
            }else {
                s+="B";
            }
        }else {
            string ns = s + a[0] + s + a[1] + s + a[2] + s + a[3];
			int x = press(ns);

            if(x==s.size()){
                s+="A";
            }else if(x==s.size()+1) {
                s+="X";
            }else {
                s+="B";
            }
        }
	}

	for (char c : {'A', 'B', 'X', 'Y'}) {
		if (press(s + c) == n) {
			s += c;
			break;
		}
	}

	return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...