Submission #1297799

#TimeUsernameProblemLanguageResultExecution timeMemory
1297799bangchanCombo (IOI18_combo)C++20
100 / 100
9 ms480 KiB
#include "combo.h"
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <limits.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<bool> vb;
typedef vector<double> vd;
typedef vector<string> vs;
typedef vector<char> vc;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
typedef vector<pii> vii;
typedef map<int, int> mii;
typedef vector<vl> vvl;
typedef pair<ll, ll> pll;
typedef vector<pll> vpl;

#define F first
#define S second
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
#define pb push_back
#define forn(i, x, n) for (ll i = x; i < n; i++)
#define fornl(i, x, n) for(ll i = x; i >= n; i--)
#define all(x) x.begin(), x.end()
#define mod 1000000007
#define inf 10000000000000

string guess_sequence(int n) {
  string r = "";
  vc t;

  if(n > 1){
    if(press("AB")){
      if(press("A")){r += 'A'; t = {'B', 'X', 'Y'};}
      else{r += 'B'; t = {'A', 'X', 'Y'};}
    } else {
      if(press("X")){r += 'X'; t = {'B', 'A', 'Y'};}
      else{r += 'Y'; t = {'A', 'B', 'X'};}
    }

    forn(i, 1, n - 1){
      string s = r + t[0] + t[0] + r + t[0] + t[1] + r + t[0] + t[2] + r + t[1];
      ll x = press(s);
      if(x == r.size() + 2) r += t[0];
      else if(x == r.size() + 1) r += t[1];
      else if(x == r.size()) r += t[2];
    }

    if(press(r + t[0]) == r.size() + 1) r += t[0];
    else if(press(r + t[1]) == r.size() + 1) r += t[1];
    else r += t[2];
  } else {
    if(press("A")) r = 'A';
    else if(press("B")) r = 'B';
    else if(press("X")) r = 'X';
    else r = 'Y';
  }

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