Submission #1237077

#TimeUsernameProblemLanguageResultExecution timeMemory
1237077caacrugon콤보 (IOI18_combo)C++20
100 / 100
6 ms484 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

string guess_sequence(int N) {
  string p="",S="";
  vector<char> lc={'A','B','X','Y'};
  vector<char> lcf;
  char av=' ';
  p+=lc[lc.size()-1];
  p+=lc[lc.size()-2];
  int coins = press(p);
  if(coins>0){
    p=lc[lc.size()-1];
    coins=press(p);
    if(coins>0){
      S=lc[lc.size()-1];
      av=lc[lc.size()-1];
    }else{
      S=lc[lc.size()-2];
      av=lc[lc.size()-2];
    }
  }else{
    p=lc[lc.size()-3];
    coins=press(p);
    if(coins>0){
      S=lc[lc.size()-3];
      av=lc[lc.size()-3];
    }else{
      S=lc[lc.size()-4];
      av=lc[lc.size()-4];
    }
  }
  for(int i=0;i<lc.size();i++){
    if(lc[i]==av)continue;
    lcf.push_back(lc[i]);
  }
  int bf=1;
  while(S.size()<N){
    if(S.size()+2<=N){
      p=S;
      p+=lcf[lcf.size()-1];
      p+=lcf[lcf.size()-2];
      p+=S;
      p+=lcf[lcf.size()-1];
      p+=lcf[lcf.size()-1];
      p+=S;
      p+=lcf[lcf.size()-1];
      p+=lcf[lcf.size()-3];
      p+=S;
      p+=lcf[lcf.size()-2];
      int coins=press(p);
      if(coins>=S.size()+2){
        S+=lcf[lcf.size()-1];
      }else if(coins==S.size()+1){
        S+=lcf[lcf.size()-2];
      }else{
        S+=lcf[lcf.size()-3];
      }
      bf++;
    }else{
      p=S;
      p+=lcf[lcf.size()-1];
      p+=S;
      p+=lcf[lcf.size()-2];
      int coins=press(p);
      if(coins>bf){
        bf=coins;
        p=S;
        p+=lcf[lcf.size()-1];
        coins=press(p);
        if(coins>=bf){
          S+=lcf[lcf.size()-1];
        }else{
          S+=lcf[lcf.size()-2];
        }
      }else{
        S+=lcf[lcf.size()-3];
      }
    }
  }
  return S;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...