Submission #1208396

#TimeUsernameProblemLanguageResultExecution timeMemory
1208396AvianshCombo (IOI18_combo)C++20
100 / 100
20 ms484 KiB
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

string guess_sequence(int n) {
    srand(time(0));
    //press();
    string curr = "AB";
    int c = press(curr);
    if(c==0){
        curr="X";
        if(press(curr)==0)
            curr="Y";
    }
    else if(c == 1){
        if(press("A")){
            curr="A";
        }
        else{
            curr="B";
        }
    }
    else{
        curr="A";
    }
    //curr has first character now;
    string chars = "";
    if(curr=="A"){
        chars="BXY";
    }
    else if(curr=="B"){
        chars="AXY";
    }
    else if(curr=="X"){
        chars="ABY";
    }
    else{
        chars="ABX";
    }
    //chars has the thingies now;
    for(int i = 1;i<n-1;i++){
        string query = "";
        for(int j = 0;j<i;j++){
            query+=curr[j];
        }
        query+=chars[0];
        query+=chars[0];
        for(int j = 0;j<i;j++){
            query+=curr[j];
        }
        query+=chars[0];
        query+=chars[1];
        for(int j = 0;j<i;j++){
            query+=curr[j];
        }
        query+=chars[0];
        query+=chars[2];
        for(int j = 0;j<i;j++){
            query+=curr[j];
        }
        query+=chars[1];
        int x = press(query);
        if(x==curr.size()){
            curr+=chars[2];
        }
        else if(x==curr.size()+1){
            curr+=chars[1];
        }
        else{
            curr+=chars[0];
        }
    }
    if(curr.size()<n){
        curr+=chars[0];
        if(press(curr)==curr.size()){
            return curr;
        }
        curr[curr.size()-1]=chars[1];
        if(press(curr)==curr.size()){
            return curr;
        }
        curr[curr.size()-1]=chars[2];
    }
    return curr;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...