Submission #143794

#TimeUsernameProblemLanguageResultExecution timeMemory
143794WhipppedCreamCombo (IOI18_combo)C++17
100 / 100
57 ms576 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
#define pb push_back
typedef pair<int, int> ii;
typedef long long ll;

string guess_sequence(int n)
{
  string all = "ABXY";
  string p;
  p = "AB";
  int x = press(p);
  char first;
  if(x>= 1)
  {
    p = "A";
    int y = press(p);
    if(y == 1) first = 'A';
    else first = 'B';
  }
  else
  {
    p = "X";
    int y = press(p);
    if(y == 1) first = 'X';
    else first = 'Y';
  }
  string ans; ans.pb(first);
  char c1 = '-', c2 = '-', c3 = '-';
  for(int i = 0; i< 4; i++)
  {
    if(all[i] == first) continue;
    if(c1 == '-') c1 = all[i];
    else if(c2 == '-') c2 = all[i];
    else c3 = all[i];
  }
  for(int i = 1; i< n-1; i++)
  {
    string toask;
    toask += ans;
    toask += c1;
    toask += ans;
    toask += c2;
    toask += c1;
    toask += ans;
    toask += c2;
    toask += c2;
    toask += ans;
    toask += c2;
    toask += c3;
    int res = press(toask);
    if(res == i) ans.pb(c3);
    else if(res == i+1) ans.pb(c1);
    else ans.pb(c2);
  }
  if(n> 1)
  {
    string toask;
    toask += ans;
    toask += c1;
    toask += ans;
    toask += c2;
    int res = press(toask);
    if(res == n)
    {
      string toask;
      toask += ans+c1;
      int res = press(toask);
      if(res == n) ans.pb(c1);
      else ans.pb(c2);
    }
    else ans.pb(c3);
  }
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...