제출 #800084

#제출 시각아이디문제언어결과실행 시간메모리
800084Josia콤보 (IOI18_combo)C++17
100 / 100
24 ms600 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; string guess_sequence(int N) { char start = '?'; if (press("AB")) { if (press("A")) start='A'; else start='B'; } else { if (press("X")) start='X'; else start='Y'; } if (N == 1) return {start}; vector<char> trans; for (char i: {'A', 'B', 'X', 'Y'}) if (i != start) trans.push_back(i); string res = {start}; for (int i = 1; i<N-1; i++) { string p = ""; p.append(res); p.push_back(trans[0]); p.push_back(trans[0]); p.append(res); p.push_back(trans[0]); p.push_back(trans[1]); p.append(res); p.push_back(trans[0]); p.push_back(trans[2]); p.append(res); p.push_back(trans[1]); int coins = press(p); if (coins == (int)res.size()) { res.push_back(trans[2]); } if (coins == (int)res.size()+1) { res.push_back(trans[1]); } if (coins == (int)res.size()+2) { res.push_back(trans[0]); } } // assert((int)res.size() == N-1); // assert(press(res) == (int)res.size()); string p = ""; p.append(res); p.push_back(trans[0]); if (press(p) == N) { res.push_back(trans[0]); } else { p.pop_back(); p.push_back(trans[1]); if (press(p) == N) { res.push_back(trans[1]); } else res.push_back(trans[2]); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...