제출 #1284085

#제출 시각아이디문제언어결과실행 시간메모리
1284085hssaan_arifCombo (IOI18_combo)C++20
91 / 100
8 ms480 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; #define pb push_back string guess_sequence(int N) { int n = N; if (n == 1){ int p = press("A"); if (p){ // cout << "A" << endl; return "A"; } p = press("B"); if (p){ // cout << "B" << endl; return "B"; } p = press("X"); if (p){ // cout << "X" << endl; return "X"; } p = press("Y"); if (p){ // cout << "Y" << endl; return "Y"; } } string s = "AA" ; string F = "" , X = ""; int p = press(s); if (p){ F = "A"; if (p == 2){ X = "A"; }else{ string s = "AB"; int p = press(s); if (p == 2){ X = "B"; }else{ s = "AX"; p = press(s); if (p == 2){ X = "X"; }else{ s = "AY"; p = press(s); if (p == 2){ X = "Y"; } } } } }else{ s = "BA" ; p = press(s); if (p){ F = "B"; if (p == 2){ X = "A"; }else{ string s = "BB"; int p = press(s); if (p == 2){ X = "B"; }else{ s = "BX"; p = press(s); if (p == 2){ X = "X"; }else{ s = "BY"; p = press(s); if (p == 2){ X = "Y"; } } } } }else{ s = "XA" ; p = press(s); if (p){ F = "X"; if (p == 2){ X = "A"; }else{ string s = "XB"; int p = press(s); if (p == 2){ X = "B"; }else{ s = "XX"; p = press(s); if (p == 2){ X = "X"; }else{ s = "XY"; p = press(s); if (p == 2){ X = "Y"; } } } } }else{ s = "YA" ; p = press(s); if (p){ F = "Y"; if (p == 2){ X = "A"; }else{ string s = "YB"; int p = press(s); if (p == 2){ X = "B"; }else{ s = "YX"; p = press(s); if (p == 2){ X = "X"; }else{ s = "YY"; p = press(s); if (p == 2){ X = "Y"; } } } } } } } } vector<string> S; if (F != "A"){ S.pb("A"); } if (F != "B"){ S.pb("B"); } if (F != "X"){ S.pb("X"); } if (F != "Y"){ S.pb("Y"); } string ans = ""; ans += F; ans += X; for (int i = 2 ; i < n ; i++){ // cout << ans << " "; if (i == n-1){ string s = ""; s += ans; s += S[0]; int p = press(s); if (p == i+1){ ans += S[0]; continue; } s = ""; s += ans; s += S[1]; p = press(s); if (p == i+1){ ans += S[1]; continue; } ans += S[2]; continue; } string s = ""; s += ans; s += S[0]; s += ans; s += S[1]; s += S[0]; s += ans; s += S[1]; s += S[1]; s += ans; s += S[1]; s += S[2]; // cout << s << endl; int p = press(s); if (p == i){ ans += S[2]; }else if (p == i+1){ ans += S[0]; }else{ ans += S[1]; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...