제출 #1330843

#제출 시각아이디문제언어결과실행 시간메모리
1330843Taxiradio콤보 (IOI18_combo)C++20
100 / 100
9 ms524 KiB
#include "combo.h"
#include <bits/stdc++.h>
using namespace std;

string com(string p , vector<string> s){
  string ans="";
  for(int i = 0; i < s.size(); i++){
    ans += p;
    ans += s[i];
  }
  return ans;
}

string com2(char a , char b){
  string ans = "";
  ans.push_back(a);
  ans.push_back(b);
  return ans;
}


std::string guess_sequence(int N) {
  vector<char> a = {'A' , 'B' , 'X' , 'Y'};
  string b = "";
  //bool u = 0;
  for(int i = 0; i < 1; i++){
    string c = com(b , {{a[0]} , {a[1]}});
    int d = press(c);
    if(d >= i+1){
      c = com(b , {{a[0]}});
      if(press(c) >= i+1){
        b.push_back(a[0]);
      }else{
        b.push_back(a[1]);
      }
    }else{
      c = com(b , {{a[2]}});
      if(press(c) >= i+1){
        b.push_back(a[2]);
      }else{
        b.push_back(a[3]);
      }
    }
  }
  vector<char> a2;
  for(int i = 0; i < 4; i++){
    if(a[i] != b[0])a2.push_back(a[i]);
  }
  for(int i = 1; i <= N-2; i++){
    string c = com(b , {com2(a2[0] , a2[0]) ,com2(a2[0] , a2[1]) , com2(a2[0] , a2[2]) ,  {a2[1]}});
    int d = press(c);
    if(d == i){
      b.push_back(a2[2]);
    }
    if(d == i+1){
      b.push_back(a2[1]);
    }
    if(d == i+2){
      b.push_back(a2[0]);
    }
  }
  if(N!=1)for(int i = N-1; i < N; i++){
    string c = com(b , {{a[0]} , {a[1]}});
    int d = press(c);
    if(d >= i+1){
      c = com(b , {{a[0]}});
      if(press(c) >= i+1){
        b.push_back(a[0]);
      }else{
        b.push_back(a[1]);
      }
    }else{
      c = com(b , {{a[2]}});
      if(press(c) >= i+1){
        b.push_back(a[2]);
      }else{
        b.push_back(a[3]);
      }
    }
  }
  //cout << b << endl;
  return b;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...