Submission #1324408

#TimeUsernameProblemLanguageResultExecution timeMemory
1324408mantaggezCombo (IOI18_combo)C++20
100 / 100
9 ms592 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

string guess_sequence(int N) {
  string s = "";
  string src;

  if(N == 1)
  {
    if(press("A")) return "A";
    if(press("B")) return "B";
    if(press("X")) return "X";
    return "Y";
  }

  int AX = press("AX");
  if(AX > 1) s += "A", src = "ABXY";
  else if(AX == 1)
  {
    int A = press("A");
    if(A == 1) s += "A", src = "ABXY";
    else if(A == 0) s += "X", src = "XABY";
  }
  else if(AX == 0)
  {
    int B = press("B");
    if(B == 1) s += "B", src = "BAXY";
    else if(B == 0) s += "Y", src = "YABX"; 
  }
  
  // if(press("A")) s += "A", src = "ABXY";
  // else if(press("X")) s += "X", src = "XABY";
  // else if(press("B")) s += "B", src = "BAXY";
  // else s += "Y", src = "YABX"; 

  int idx = 1;
  for(int i=0;i<N-2;i++)
  {
    string p = "";
    p += ((s + src[2]) + (s + src[3] + src[1]) + (s + src[3] + src[2]) + (s + src[3] + src[3]));
    // cout << p << '\n';
    int cnt = press(p);
    // cout << cnt << "\n";
    // cout << "idx : " << idx << '\n';
    if(cnt == idx) s += src[1];
    else if(cnt == idx + 1) s += src[2];
    else s += src[3];
    idx++;
  }

  idx++;

  int len1 = press((s + src[1]) + (s + src[2]));
  int len2 = press((s + src[2]) + (s + src[3]));
  if(len1 == idx && len2 == idx) s += src[2];
  else if(len1 == idx) s += src[1];
  else if(len2 == idx) s += src[3];

  // cout << "len1 : " << len1 << '\n';
  // cout << "len2 : " << len2 << '\n';

  // cout << "final string : " << s << '\n';
  
  return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...