Submission #1259842

#TimeUsernameProblemLanguageResultExecution timeMemory
1259842sokratisiCombo (IOI18_combo)C++20
100 / 100
7 ms532 KiB
#include "combo.h"
#include <string>
#include <set>
#include <vector>
#include <cstdio>

using namespace std;

int coins;
string use;

//int press(string p);

char find_first() {
  use = "AB";
  coins = press(use);
  if (coins) {
    use = "A";
    coins = press(use);
    if (coins) return 'A';
    else return 'B';  
  }
  use = "X";
  coins = press(use);
  if (coins) return 'X';
  else return 'Y';
}

string guess_sequence(int n) {

  char c = find_first();
  set<char> s = {'A', 'B', 'X', 'Y'};
  s.erase(c);
  vector<char> chrs;
  for (auto u: s) chrs.push_back(u);

  string p = "";
  if (n == 1) return (p + c);
  p += c;
  for (int i = 2; i <= n - 1; i++) {
    use = p + chrs[0] + chrs[0] + p + chrs[0] + chrs[1] + p + chrs[0] + chrs[2] + p + chrs[1];
    int coins = press(use);
    // if (coins < i - 1) {
    //   printf("huh\n");
    // }
    if (coins == i + 1) p += chrs[0];
    else if (coins == i) p += chrs[1];
    else p += chrs[2];
  }
  use = p + chrs[0];
  coins = press(use);
  if (coins == n) return use;
  use = p + chrs[1];
  coins = press(use);
  if (coins == n) return use;
  return (p + chrs[2]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...