제출 #990018

#제출 시각아이디문제언어결과실행 시간메모리
990018mannshah1211콤보 (IOI18_combo)C++17
97 / 100
18 ms1988 KiB
/**
 *    author: tourist
 *    created:
**/
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

#ifdef LOCAL
#include "algo/debug.h"
#else
#define debug(...) 42
#endif

vector<string> alphabet = {"A", "B", "X", "Y"};

string guess_sequence(int n) {
  string firs = "?", ans;
  for (int i = 0; i < 3; i++) {
    if (press(alphabet[i]) == 1) {
      firs = alphabet[i];
      break;
    }
  }
  if (firs == "?") {
    firs = alphabet[3];
  }
  ans += firs;
  if (n == 1) {
    return ans;
  }
  vector<int> possible;
  for (int i = 0; i < 4; i++) {
    if (alphabet[i] != firs) {
      possible.push_back(i);
    }
  }
  for (int i = 1; i < n - 1; i++) {
    int x = press(ans + alphabet[possible[0]] + ans + alphabet[possible[1]] + alphabet[possible[0]] + ans + alphabet[possible[1]] + alphabet[possible[1]] + ans + alphabet[possible[1]] + alphabet[possible[2]]);
    if (x == i) {
      ans += alphabet[possible[2]];
    } else if (x == i + 1) {
      ans += alphabet[possible[0]];
    } else {
      ans += alphabet[possible[1]];
    }
  }
  if (press(ans + alphabet[possible[0]]) == n) {
    ans += alphabet[possible[0]];
    return ans;
  }
  if (press(ans + alphabet[possible[1]]) == n) {
    ans += alphabet[possible[1]];
    return ans;
  }
  ans += alphabet[possible[2]];
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...