제출 #1215919

#제출 시각아이디문제언어결과실행 시간메모리
1215919jump콤보 (IOI18_combo)C++20
97 / 100
9 ms436 KiB
#include "combo.h"
#include <iostream>
int loop = 0;
std::string guess_sequence(int N) {
  int currentCoins = 1;
  char startsq = 0;
  char currentsq = 0;
  char othersq = 0;
  char lastsq = 0;
  std::string s = "ABXY";
  if(press("AB"))
  if(press("B"))startsq='B';
  else startsq='A';
  if(press("XY"))
  if(press("Y"))startsq='Y';
  else startsq='X';
  
  std::string guess_str1;
  guess_str1.assign(N,startsq);
  if(N==1)return guess_str1;
  std::string guess_str2;
  guess_str2.assign(N,startsq);
  for(auto cs:s){
      if(cs!=startsq&&currentsq!=0&&othersq!=0){
        lastsq=cs;
        break;
      }
      if(cs!=startsq&&currentsq!=0&&lastsq==0){
        othersq=cs;
      }
      if(cs!=startsq&&othersq==0){
        currentsq=cs;
      }
      //std::cout << startsq << ' '<< lastsq << ' ' << currentsq << ' ' << othersq<< '\n';
    }
  for(int i=1;i<N-1;i++){
    guess_str2=guess_str1;
    guess_str1[i]=currentsq;
    guess_str2[i]=othersq;
    std::string guess_str3 = guess_str2;
    std::string guess_str4 = guess_str2;
    guess_str2[i+1]=lastsq;
    guess_str3[i+1]=currentsq;
    guess_str4[i+1]=othersq;
    int newC = press(guess_str1+guess_str2+guess_str3+guess_str4);
    if(newC==i){
      guess_str1[i]=lastsq;
    }
    if(newC==i+1){
      guess_str1[i]=currentsq;
    }
    if(newC==i+2){
      guess_str1[i]=othersq;
    }
    //std::cout << guess_str1 << ' ' << lastsq << ' ' << currentsq << ' ' << othersq<< '\n';
  }
  guess_str1[N-1]=lastsq;
  if(press(guess_str1)==N)return guess_str1;
  guess_str1[N-1]=currentsq;
  if(press(guess_str1)==N)return guess_str1;
  guess_str1[N-1]=othersq;
  return guess_str1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...