Submission #1200448

#TimeUsernameProblemLanguageResultExecution timeMemory
1200448nekolie콤보 (IOI18_combo)C++20
100 / 100
7 ms484 KiB
// When she's prettier than any DP you've ever seen...
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

string guess_sequence(int n) {
    string odp;
    int m = 0, x = press("AB");
    if (x == 0) {
        x = press("X"), m++;
        if (x == 1)
            odp += 'X';
        else
            odp += 'Y';
    }
    else {
        x = press("A"), m++;
        if (x == 1)
            odp += 'A';
        else
            odp += 'B';
    }
    while (m+2 <= n) {
        if (odp[0] == 'A') {
            x = press(odp+"BB"+odp+"BX"+odp+"BY"+odp+"X");
            if (x == m)
                odp += 'Y';
            else if (x == m+1)
                odp += 'X';
            else
                odp += 'B';
        }
        else if (odp[0] == 'B') {
            x = press(odp+"AA"+odp+"AX"+odp+"AY"+odp+"X");
            if (x == m)
                odp += 'Y';
            else if (x == m+1)
                odp += 'X';
            else
                odp += 'A';
        }
        else if (odp[0] == 'X') {
            x = press(odp+"AA"+odp+"AB"+odp+"AY"+odp+"B");
            if (x == m)
                odp += 'Y';
            else if (x == m+1)
                odp += 'B';
            else
                odp += 'A';
        }
        else {
            x = press(odp+"BB"+odp+"BX"+odp+"BA"+odp+"X");
            if (x == m)
                odp += 'A';
            else if (x == m+1)
                odp += 'X';
            else
                odp += 'B';
        }
        m++;
    }
    if (m == n-1) {
        if (odp[0] == 'A') {
            x = press(odp+"B");
            if (x == n)
                odp += 'B';
            else {
                x = press(odp+"X");
                if (x == n)
                    odp += 'X';
                else
                    odp += 'Y';
            }
        }
        else if (odp[0] == 'B') {
            x = press(odp+"A");
            if (x == n)
                odp += 'A';
            else {
                x = press(odp+"X");
                if (x == n)
                    odp += 'X';
                else
                    odp += 'Y';
            }
        }
        else if (odp[0] == 'X') {
            x = press(odp+"A");
            if (x == n)
                odp += 'A';
            else {
                x = press(odp+"B");
                if (x == n)
                    odp += 'B';
                else
                    odp += 'Y';
            }
        }
        else {
            x = press(odp+"B");
            if (x == n)
                odp += 'B';
            else {
                x = press(odp+"X");
                if (x == n)
                    odp += 'X';
                else
                    odp += 'A';
            }
        }
    }
    return odp;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...