제출 #1305182

#제출 시각아이디문제언어결과실행 시간메모리
1305182kaloyan콤보 (IOI18_combo)C++20
0 / 100
1 ms332 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cassert>

using namespace std;

inline bool operator == (string &a, string &b)
{
    if(a.size() != b.size()) return 0;

    for(int i = 0 ; i < a.size() ; ++i)
    {
        if(a[i] != b[i])
        {
            return 0;
        }
    }

    return 1;
}

int press(string p);

string guess_sequence(int N)
{
    string res = "";
    string letters = "";

    if (press("A")) res = "A";
    else if (press("B")) res = "B";
    else if (press("X")) res = "X";
    else res = "Y";

    for(string s : {"A", "B", "X", "Y"})
    {
        if(s == res) continue;
        letters += s;
    }

    assert(letters.size() == 3);

    for(int i = 1 ; i < N - 1 ; ++i)
    {
        int ans = press(res + letters[0] + 
                        res + letters[1] + letters[0] + 
                        res + letters[1] + letters[1] +
                        res + letters[1] + letters[2]); 

        int len = i;
        if (ans == len + 1) ans += letters[0];
        else if (ans == len + 2) ans += letters[1];
        else ans += letters[2];
    }

    if (press(res + "A") == N) res += "A";
    else if (press(res + "B") == N) res += "B";
    else if (press(res + "X") == N) res += "X";
    else res += "Y";
    
    assert(res.size() == 1);
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...