# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
154437 | andreiomd | 콤보 (IOI18_combo) | C++11 | 54 ms | 576 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
string guess_sequence (int N)
{
string S;
char V[4] = {'A', 'B', 'X', 'Y'};
vector < int > A;
if(N == 3)
{
for(int i = 1; i <= N; ++i)
{
if(i == 1)
{
int Ret = 0;
for(int j = 0; j < 3; ++j)
{
S.push_back(V[j]);
if(press(S) == i)
{
Ret = j;
break;
}
else
S.pop_back();
}
if(S.empty())
{
S.push_back(V[3]);
Ret = 3;
}
for(int j = 0; j < 4; ++j)
if(j != Ret)
A.push_back(j);
}
else
{
for(int j = 0; j < 2; ++j)
{
S.push_back(V[A[j]]);
if(press(S) == i)
break;
else
S.pop_back();
}
if((int)S.size() != i)
S.push_back(V[A[2]]);
}
}
}
else
{
int First = 3;
if(press("AB"))
{
if(press("A"))
{
S.push_back('A');
First = 0;
}
else
{
S.push_back('B');
First = 1;
}
}
else
{
if(press("X"))
{
S.push_back('X');
First = 2;
}
else
{
S.push_back('Y');
First = 3;
}
}
if(N == 1)
return S;
for(int i = 2; i < N; ++i)
{
if(First == 0)
{
int X = press(S + "B" + S + "XB" + S + "XX" + S + "XY");
if(X == (int)S.size() + 1)
S.push_back('B');
else if(X == (int)S.size())
S.push_back('Y');
else
S.push_back('X');
continue;
}
if(First == 1)
{
int X = press(S + "A" + S + "XA" + S + "XX" + S + "XY");
if(X == (int)S.size() + 1)
S.push_back('A');
else if(X == (int)S.size())
S.push_back('Y');
else
S.push_back('X');
continue;
}
if(First == 2)
{
int X = press(S + "A" + S + "BA" + S + "BB" + S + "BY");
if(X == (int)S.size() + 1)
S.push_back('A');
else if(X == (int)S.size())
S.push_back('Y');
else
S.push_back('B');
continue;
}
int X = press(S + "A" + S + "XA" + S + "XB" + S + "XX");
if(X == (int)S.size() + 1)
S.push_back('A');
else if(X == (int)S.size())
S.push_back('B');
else
S.push_back('X');
}
for(int i = 0; i < 4; ++i)
if(i != First)
A.push_back(i);
for(int i = 0; i < 2; ++i)
{
S.push_back(V[A[i]]);
if(press(S) == N)
break;
else
S.pop_back();
}
if((int)S.size() != N)
S.push_back(V[A[2]]);
}
return S;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |