Submission #468084

#TimeUsernameProblemLanguageResultExecution timeMemory
468084pluto_ishCombo (IOI18_combo)C++14
0 / 100
1 ms200 KiB
#include <bits/stdc++.h>
 
#define pb push_back
#define ff first
#define ss second
 
using namespace std;
 
typedef long long ll;
typedef unsigned long long ull;
 
const ll INF = (ll)1<<62;
const ll MOD = 1e9+7;
const int iINF = 1<<30;
const double PI = 3.14159265359;

#include "combo.h"

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

  string adder[4];
  string rem = "";
  if(curr == "A"){
    adder[0] = "BB"; adder[1] = "BX"; adder[2] = "BY"; adder[3] = "X"; rem = "Y";
  }
  else if(curr == "B"){
    adder[0] = "AA"; adder[1] = "AX"; adder[2] = "AY"; adder[3] = "X"; rem = "Y";
  }
  else if(curr == "X"){
    adder[0] = "AA"; adder[1] = "AB"; adder[2] = "AY"; adder[3] = "Y"; rem = "B";
  }
  else{
    adder[0] = "AA"; adder[1] = "AB"; adder[2] = "AX"; adder[3] = "X"; rem = "B";
  }

  while((int)curr.size() < n-1){
    string q = curr + adder[0] + curr + adder[1] + curr + adder[2] + curr + adder[3];
    int resp = press(q);

    if(resp == (int)curr.size()+2)
      curr += string(1, adder[0][0]);
    else if(resp == (int)curr.size()+1)
      curr += string(1, adder[3][0]);
    else
      curr += rem;
  }  

  if(curr[0] == 'A'){
    adder[0] = "B"; adder[1] = "X"; rem = "Y";
  }
  else if(curr[0] == 'B'){
    adder[0] == "A"; adder[1] = "X"; rem = "Y";
  }
  else if(curr[0] == 'X'){
    adder[0] = "A"; adder[1] = "B"; rem = "Y";
  }
  else{
    adder[0] = "A"; adder[1] = "B"; rem = "X";
  }

  if(press(curr+adder[0]) == n)
    return curr + adder[0];
  if(press(curr+adder[1]) == n)
    return curr + adder[1];

  return curr + rem;  
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...