제출 #1342274

#제출 시각아이디문제언어결과실행 시간메모리
1342274sonhai콤보 (IOI18_combo)C++20
100 / 100
8 ms516 KiB
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

string guess_sequence(int N) {
  string S = "";
  int cost;
  // find the first character (0)
  cost = press("AB");
  if (cost >= 1) {
    cost = press("A");
    if (cost == 1) S = "A";
    else S = "B";
  }
  else {
    cost = press("X");
    if (cost == 1) S = "X";
    else S = "Y";
  }
  if (N == 1) return S;
  // setup
  string T = "ABXY";
  vector<char> chr;
  for (char c : T) if (c != S[0]) chr.push_back(c);
  // find character from 1 -> N - 2
  for (int i = 1; i < N - 1; i++) {
    string NS = S + chr[0] + chr[0] + S + chr[0] + chr[1] + S + chr[0] + chr[2] + S + chr[1];
    cost = press(NS);
    if (cost == i) S = S + chr[2];
    if (cost == i + 1) S = S + chr[1];
    if (cost == i + 2) S= S + chr[0];
  }
  // find character N - 1
  if (press(S + chr[0]) == N) S = S + chr[0];
  else if (press(S + chr[1]) == N) S = S + chr[1];
       else S = S + chr[2];
  return S;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...