제출 #1022644

#제출 시각아이디문제언어결과실행 시간메모리
1022644Joshi503콤보 (IOI18_combo)C++14
100 / 100
22 ms2044 KiB
#include <bits/stdc++.h> #include "combo.h" using namespace std; // string res = "A"; // int press(string p){ // int j = 0; // int tmp = 0; // for(int i = 0; i < (int)p.size(); i++){ // if(p[i] == res[j]) j++; // else j = 0; // tmp = max(tmp, j); // } // cout << tmp << "\n"; // return tmp; // } string aux(string k, string ca){ string ka=k; string k1=k; ka+=ca[1]; ka+=ca[0]; ka+=k; ka+=ca[1]; ka+=ca[1]; ka+=k; ka+=ca[1]; ka+=ca[2]; ka+=k; ka+=ca[0]; int res=press(ka); res-= (int)k.size(); if(res >= 2){ k1+=ca[1]; }else if(res == 1){ k1+=ca[0]; }else{ k1+=ca[2]; } // cout << k1 << "a\n"; return k1; } string guess_sequence(int N){ string ans="AB"; string k=""; if(press(ans) >= 1){ ans="A"; if(press(ans) == 1){ k="A"; }else{ k="B"; } }else{ ans="X"; if(press(ans) == 1){ k="X"; }else{ k="Y"; } } char car= k[0]; string c="ABXY"; string ca="aaa"; int j=0; for(int i=0; i<4; i++){ if(c[i]==car){ continue; }else{ ca[j]=c[i]; j++; } } for(int i=1; i<N-1; i++){ k=aux(k,ca); } ans=k; string k1=k; k1+=ca[0]; k1+=k; k1+=ca[1]; if(N==1){ return ans; } if(press(k1) == (int)k.size() +1){ k1=k; k1+=ca[0]; if(press(k1) == (int)k.size() +1){ ans=k1; // cout << "a\n"; }else{ // cout << "b\n"; ans+=ca[1]; } }else{ // cout << "c\n"; ans+=ca[2]; } // cout << ans << "\n"; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...