Submission #704845

#TimeUsernameProblemLanguageResultExecution timeMemory
704845ngano_upat_naCombo (IOI18_combo)C++17
100 / 100
34 ms952 KiB
#include "bits/stdc++.h"
#include "combo.h"
using namespace std;

string guess_sequence(int N) {
    string ans;
    char start = 'Y';
      
    
    int a = press("AB");
    if (a >= 1) {
        a = press("B");
        if (a == 1) {
            start = 'B';
        }
        else {
            start = 'A';
        }   
    }   
    else {
        a = press("X");
        if (a == 1) {
            start = 'X';
        }   
        else {
            start = 'Y';
        }   
    }
    
    if (N == 1) {
        ans.push_back(start);
        return ans;
    }   
    
    if (start == 'A') {
        ans = "A";
        
        for (int i=1; i<N-1; i++) {
            string A = ans + "B";
            string B = ans + "XB";
            string C = ans + "XY";
            string D = ans + "XX";
            
            A = A + B + C + D;
            a = press(A);
            
            if (a == i) {
                ans = ans + "Y";
            }   
            if (a == i+1) {
                ans = ans + "B";
            }   
            if (a >= i+2) {
                ans = ans + "X";
            }   
        }   
        string X = ans + "X";
        string Y = ans + "Y";
        string add = X + Y;
        a = press(add);
        
        if (a == N) {
            a = press(X);
            if (a == N) {
                ans = X;
            }   
            else {
                ans = Y;
            }   
        }   
        else {
            ans = ans + "B";
        }   
    } 
 
    else if (start == 'B') {
        ans = "B";
        
        for (int i=1; i<N-1; i++) {
            string A = ans + "A";
            string B = ans + "XA";
            string C = ans + "XY";
            string D = ans + "XX";
            
            A = A + B + C + D;
            a = press(A);
            
            if (a == i) {
                ans = ans + "Y";
            }   
            if (a == i+1) {
                ans = ans + "A";
            }   
            if (a >= i+2) {
                ans = ans + "X";
            }   
        }   
        string X = ans + "X";
        string Y = ans + "Y";
        string add = X + Y;
        a = press(add);
        
        if (a == N) {
            a = press(X);
            if (a == N) {
                ans = X;
            }   
            else {
                ans = Y;
            }   
        }   
        else {
            ans = ans + "A";
        }   
    } 
    
    
    else if (start == 'X') {
        ans = "X";
        
        for (int i=1; i<N-1; i++) {
            string A = ans + "B";
            string B = ans + "AB";
            string C = ans + "AY";
            string D = ans + "AA";
            
            A = A + B + C + D;
            a = press(A);
            
            if (a == i) {
                ans = ans + "Y";
            }   
            if (a == i+1) {
                ans = ans + "B";
            }   
            if (a >= i+2) {
                ans = ans + "A";
            }   
        }   
        string X = ans + "A";
        string Y = ans + "Y";
        string add = X + Y;
        a = press(add);
        
        if (a == N) {
            a = press(X);
            if (a == N) {
                ans = X;
            }   
            else {
                ans = Y;
            }   
        }   
        else {
            ans = ans + "B";
        }   
    } 
    
    
    else if (start == 'Y') {
        ans = "Y";
        
        for (int i=1; i<N-1; i++) {
            string A = ans + "B";
            string B = ans + "XB";
            string C = ans + "XA";
            string D = ans + "XX";
            
            A = A + B + C + D;
            a = press(A);
            
            if (a == i) {
                ans = ans + "A";
            }   
            if (a == i+1) {
                ans = ans + "B";
            }   
            if (a >= i+2) {
                ans = ans + "X";
            }   
        }   
        string X = ans + "X";
        string Y = ans + "A";
        string add = X + Y;
        a = press(add);
        
        if (a == N) {
            a = press(X);
            if (a == N) {
                ans = X;
            }   
            else {
                ans = Y;
            }   
        }   
        else {
            ans = ans + "B";
        }   
    } 
    
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...