Submission #446050

#TimeUsernameProblemLanguageResultExecution timeMemory
446050cs71107Combo (IOI18_combo)C++14
100 / 100
45 ms648 KiB
#include "combo.h"
#include <bits/stdc++.h>

using namespace std;

char val[10];

std::string guess_sequence(int N) {
  
  string AB = "AB";
  string AX = "AX";

  int ab = press(AB);
  int ax = press(AX);

  string ans = "";

  if(ab&&ax){

    ans = "A";
    val[0] = 'B';
    val[1] = 'X';
    val[2] = 'Y';

  }
  else if(ab){

    ans = "B";
    val[0] = 'A';
    val[1] = 'X';
    val[2] = 'Y';

  }
  else if(ax){

    ans = "X";
    val[0] = 'A';
    val[1] = 'B';
    val[2] = 'Y';

  }
  else {

    ans = "Y";
    val[0] = 'A';
    val[1] = 'B';
    val[2] = 'X';
  }

  if(N==1){
    return ans;
  }

  string tz = "";
  string to = "";
  string tt = "";
  string oz = "";

  tz += val[2];
  tz += val[0];

  to += val[2];
  to += val[1];

  tt += val[2];
  tt += val[2];

  oz += val[1];

  for(int i=1;i<N-1;i++){

    string curs = ans+tz;

    curs+=(ans+to);
    curs+=(ans+tt);
    curs+=(ans+oz);

    int curv = press(curs);
    assert(curv<=i+2);

    ans+=val[curv-i];
  }

  string ansz = ans+val[0];
  string anso = ans+val[1];

  if(press(ansz)==N){
    ans+=val[0];
  }
  else if(press(anso)==N){
    ans+=val[1];
  }
  else {
    ans+=val[2];
  }

  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...