Submission #1176523

#TimeUsernameProblemLanguageResultExecution timeMemory
1176523n3rm1n콤보 (IOI18_combo)C++17
97 / 100
9 ms484 KiB
#include "combo.h"
#include<bits/stdc++.h>
using namespace std;
int n;
string sure;
/// a 0
/// b 1
/// x 2
/// y 3
char sym[5];
int first = 0;

int feedback(string &p)
{
    int coins = press(p);
    return coins;
}
void trypos(int i)
{
    vector < char > g;
    for (int i = 0; i < 4; ++ i)
    {
        if(first == i)continue;
        g.push_back(sym[i]);
    }
    string p = "";
    for (auto sec: g)
    {
        p += sure;
        p += g[0];
        p += sec;
    }
    p += sure;
    p += g[1];
    ///cout << "spot: " << sure << endl;
    ///cout << p << endl;
    int res = feedback(p);
    if(res == sure.size() + 2)sure += g[0];
    else if(res == sure.size() + 1)sure += g[1];
    else sure += g[2];
}

void trylast()
{
    vector < char > g;
    for (int i = 0; i < 4; ++ i)
    {
        if(first == i)continue;
        g.push_back(sym[i]);
    }
    string p = "";

        p += sure;
        p += g[0];
    p += sure;
        p += g[1];
    int res = feedback(p);
    if(res == n-1)sure += g[2];
    else
    {
        p = "";
        p += sure;
        p += g[0];
        if(feedback(p) == n)sure += g[0];
        else sure += g[1];
    }
}
std::string guess_sequence(int N)
{
    n = N;
    sym[0] = 'A';
    sym[1] = 'B';
    sym[2] = 'X';
    sym[3] = 'Y';
    sure = "";
    string p = "AB";
    if(feedback(p) == 2)first = 0;
    else if(feedback(p) == 1)
    {
        p = "A";
        if(feedback(p) == 1)first = 0;
        else first = 1;
    }
    else
    {
        p = "X";
        if(feedback(p) == 1)first = 2;
        else first = 3;
    }

    sure += sym[first];
    for (int i = 1; i < n-1; ++ i)
        trypos(i);

    if(n > 1)trylast();


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