Submission #1359007

#TimeUsernameProblemLanguageResultExecution timeMemory
1359007avahwCombo (IOI18_combo)C++20
In queue
0 ms0 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

std::string guess_sequence(int N) {
  std::string p = "";
  string ref = "ABXY";
  int n = N;
  // brute force first char
  for(int i = 0; i < ref.size(); i++){
    int coin = press(p + ref[i]);
    if(coin == 1){ p += ref[i];
    break; }
  }
  if(p.size() == 0) p += 'Y';
  // first char never reappears so can guess only three others
  string lett = "ABXY";
  string t = "";
  for(auto e : lett){
    if(e != p[0]) t += e;
  }
  for(int i = 1; i < n - 1; i++){
    string guess = (p + t[0]) + (p + t[1] + t[0]) + (p + t[1] + t[1]) + (p + t[1] + t[2]);
    int coins = press(guess);
    int gain = coins - i;
    if(gain == 1){
      p += t[0];
    }
    else if(gain == 2){
      p += t[1];
    }
    else p += t[2];
  }
  // guess last char
  if(press(p + t[0]) == n) p += t[0];
  else if(press(p + t[1]) == n) p += t[1];
  else p += t[2];
  return p;
}