Submission #1355414

#TimeUsernameProblemLanguageResultExecution timeMemory
1355414seasonzCombo (IOI18_combo)C++20
0 / 100
0 ms344 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)
{
  if (press(past + "AB") == N)
  {
    if (press(past + "A") == N) return "A";
    else return "B";
  }
  else
  {
    if (press(past + "X") == N) return "X";
    else return "Y";
  }
}
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];
  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);
  return cur;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...