제출 #99139

#제출 시각아이디문제언어결과실행 시간메모리
99139JustasLeCombo (IOI18_combo)C++17
94 / 100
51 ms608 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; string guess_sequence(int N) { set<char> X = {'A', 'B', 'X', 'Y'}; string s = ""; for (auto it = X.begin(); it != X.end(); it++) { int x = press(s + *it); if (x != 0) { s += *it; X.erase(*it); break; } } if (s == "") { return s; } int prev = 1; while (true) { int sz = (int) s.size(), c = 0; if (sz == N) { break; } if (sz == N - 1) { for (auto it = X.begin(); it != X.end(); it++, c++) { string poss = s + *it; int x = press(poss); if (x > prev) { return poss; } if (c == 1) { return s + *(++it); } } } // vector<string> extraX = {"XX", "XY", "XB"}; // vector<string> extraA = {"AX", "AY", "AB"}; // vector<string> extraB = {"BA", "BX", "BY"}; // vector<string> extraY = {"YX", "YA", "YB"}; if (s[0] == 'A') { int x = press(s + "Y" + s + "XX" + s + "XY" + s + "XB"); if (x == prev) { s += 'B'; prev++; continue; } else { if (x == prev + 1) { s += "Y"; prev++; continue; } else { s += "X"; prev++; continue; } } } if (s[0] == 'B') { int x = press(s + "Y" + s + "XX" + s + "XY" + s + "XA"); if (x == prev) { s += 'A'; prev++; continue; } else { if (x == prev + 1) { s += "Y"; prev++; continue; } else { s += "X"; prev++; continue; } } } if (s[0] == 'X') { int x = press(s + "Y" + s + "BB" + s + "BY" + s + "BA"); if (x == prev) { s += 'A'; prev++; continue; } else { if (x == prev + 1) { s += "Y"; prev++; continue; } else { s += "B"; prev++; continue; } } } if (s[0] == 'Y') { int x = press(s + "B" + s + "XX" + s + "XB" + s + "XA"); if (x == prev) { s += 'A'; prev++; continue; } else { if (x == prev + 1) { s += "B"; prev++; continue; } else { s += "X"; prev++; continue; } } } } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...