제출 #1355424

#제출 시각아이디문제언어결과실행 시간메모리
1355424seasonz콤보 (IOI18_combo)C++20
5 / 100
0 ms412 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
string find_first()
{
  if (press("AB"))
  {
    if (press("A")) return "A";
    else return "B";
  }
  else
  {
    if (press("X")) return "X";
    else return "Y";
  }
}
string find_last(string &past, int N, vector<string> &avail)
{
  if (press(past + avail[0]) == N) return avail[0];
  if (press(past + avail[1]) == N) return avail[1];
  return avail[2];

}
void add_next(string &cur, vector<string> &avail, int &now, int N)
{
  if (cur.size() == N-1) return;
  string ttry = cur + avail[0] + avail[0] + cur + avail[0] + avail[1] + cur + avail[0] + avail[2] + cur + avail[1];
  int out = press(ttry);
  // cur += avail[2-out+now];
  if (out - now == 2) cur += avail[0];
  else if (out - now) cur += avail[1];
  else cur += avail[2];
  now++;
  add_next(cur, avail, now, N);
}
string guess_sequence(int N) {
  vector<string> vv = {"A", "B", "X", "Y"};
  vector<string> avail;
  string first = find_first();
  for (string ch : vv) if (ch != first) avail.push_back(ch);
  string cur = "" + first;
  int now = 1;
  add_next(cur, avail, now, N);
  cur += find_last(cur, N, avail);
  // cout << cur;
  return cur;
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...