제출 #1137371

#제출 시각아이디문제언어결과실행 시간메모리
1137371LeonidCuk콤보 (IOI18_combo)C++20
100 / 100
20 ms484 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;
void smeni(string&a,string&b)
{
    for(int i=0;i<b.size();i++)
    {
        a.push_back(b[i]);
    }
}
string guess_sequence(int n)
{
    int k;
    string res="";
    string p="ABXY";
    k=press("AB");
    if(k>0)
    {
        k=press("A");
        if(k==1)
        {
            res.push_back('A');
            swap(p[0],p[3]);
        }
        else
        {
            res.push_back('B');
            swap(p[1],p[3]);
        }
    }
    else
    {
        k=press("X");
        if(k==1)
        {
            res.push_back('X');
            swap(p[2],p[3]);
        }
        else res.push_back('Y');
    }
    if(n==1)return res;
    string t1="",t2="",t3,t4;
    t1.push_back(p[1]);
    t2.push_back(p[2]);
    t3=t2;
    t4=t2;
    t2.push_back(p[0]);
    t3.push_back(p[2]);
    t4.push_back(p[1]);
    while(res.size()<n-1)
    {
        string t=res;
        smeni(t,t1);
        smeni(t,res);
        smeni(t,t2);
        smeni(t,res);
        smeni(t,t3);
        smeni(t,res);
        smeni(t,t4);
        k=press(t);
        res.push_back(p[k-res.size()]);
    }
    string t=res;
    t.push_back(p[0]);
    smeni(t,res);
    t.push_back(p[1]);
    k=press(t);
    if(k!=n)
    {
        res.push_back(p[2]);
        return res;
    }
    else
    {
        t=res;
        t.push_back(p[0]);
        k=press(t);
        if(k==n)
        {
            res.push_back(p[0]);
        }
        else res.push_back(p[1]);
        return res;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...