Submission #1236507

#TimeUsernameProblemLanguageResultExecution timeMemory
1236507gabrupro콤보 (IOI18_combo)C++20
100 / 100
7 ms484 KiB
#include "combo.h"
#include<bits/stdc++.h>

using namespace std;
#define ll long long

// int press(string p)

char bin_search(string curr, int len){
  if (press(curr + "A" + curr + "B") > len) {
    if (press(curr + "A") > len) return 'A';
    return 'B';
  }
  if (press(curr + "X") > len) return 'X';
  return 'Y';
}

string guess_sequence(int N){
  string curr = "";
  char start = bin_search(curr, 0);
  curr += start;
  if (N == 1) return curr;
  // main code start
  for (int i=0; i<N-2; i++) {
    if (start == 'A') {
      int res = press(curr + 'X' + curr + "BX" + curr + "BY" + curr + "BB");
      res -= curr.size();
      if (res == 0) curr += 'Y';
      else if (res == 1) curr += 'X';
      else curr += 'B';
    }
    else if (start == 'B') {
      int res = press(curr + 'X' + curr + "AX" + curr + "AY" + curr + "AA");
      res -= curr.size();
      if (res == 0) curr += 'Y';
      else if (res == 1) curr += 'X';
      else curr += 'A';
    }
    else if (start == 'X') {
      int res = press(curr + 'Y' + curr + "BA" + curr + "BY" + curr + "BB");
      res -= curr.size();
      if (res == 0) curr += 'A';
      else if (res == 1) curr += 'Y';
      else curr += 'B';
    }
    else {
      int res = press(curr + 'X' + curr + "BX" + curr + "BA" + curr + "BB");
      res -= curr.size();
      if (res == 0) curr += 'A';
      else if (res == 1) curr += 'X';
      else curr += 'B';
    }
  }
  // main code end
  curr += bin_search(curr, N-1);
  return curr;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...