Submission #1362043

#TimeUsernameProblemLanguageResultExecution timeMemory
1362043lyra_g13Combo (IOI18_combo)C++20
100 / 100
6 ms524 KiB
#include "combo.h"
#include <bits/stdc++.h>
using ll = long long;
using namespace std;

int press(string p);

string guess_sequence(int n) {
  char t;
  if (press("AB")) {
    if (press("A")) {
      t = 'A';
    } else {
      t = 'B';
    }
  } else if (press("X")) {
    t = 'X';
  } else {
    t = 'Y';
  }

  /*
  B YB YX YY
  */

  vector<string> ss;
  ss.push_back("B");
  ss.push_back("Y");
  ss.push_back("X");

  ss.push_back("YB");
  ss.push_back("YX");
  ss.push_back("YY");

  if (t == 'B') {
    ss[0] = "A";
    ss[3] = "YA";
  } else if (t == 'X') {
    ss[2] = "A";
    ss[4] = "YA";
  } else if (t == 'Y') {
    ss[1] = "A";
    ss[3] = "AB";
    ss[4] = "AX";
    ss[5] = "AA";
  }

  string s;
  s += t;

  for (int i = 1; i < n; i++) {

    string buff = s;
    if (i != n - 1) {
      buff = buff + ss[0] + buff + ss[3] + buff + ss[4] + buff + ss[5];
      ll find = press(buff);
      if (find == s.size() + 1) {
        s += ss[0];
      } else if (find == s.size() + 2)
        s += ss[1];
      else {
        s += ss[2];
      }
    } else if (i == n - 1) {
      string ans = buff + ss[0];
      ll find = press(ans);
      if (find == n) {
        return ans;
      } else {
        ans = buff + ss[1];
        find = press(ans);
        if (find == n) {
          return ans;
        } else {
          ans = buff + ss[2];
          return ans;
        }
      }
    }
  }
  return s;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...