제출 #420344

#제출 시각아이디문제언어결과실행 시간메모리
420344A_D콤보 (IOI18_combo)C++14
100 / 100
43 ms564 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; char a[]={'A','B','X','Y'}; vector<char> vec; char fix(string ret) { int sz=ret.size(); string s=ret; s+=vec[0]; for(int i=0;i<3;i++){ s+=ret; s+=vec[1]; s+=vec[i]; } int c=press(s); // cout<<c<<" "<<s<<endl; if(c==sz){ return vec[2]; } else if(c==sz+1){ return vec[0]; } else{ return vec[1]; } } std::string guess_sequence(int N){ vec.clear(); char l; string ret; string s; s="AB"; int c=press(s); // cout<<c<<" "<<s<<endl; if(c>=1){ s="A"; c=press(s); // cout<<c<<" "<<s<<endl; if(c>=1){ l='A'; } else{ l='B'; } } else{ s="X"; c=press(s); // cout<<c<<" "<<s<<endl; if(c>=1){ l='X'; } else{ l='Y'; } } for(int i=0;i<4;i++){ if(a[i]!=l){ vec.push_back(a[i]); } } ret+=l; if(N==1)return ret; for(int i=1;i<N-1;i++){ ret+=fix(ret); } s=ret+"A"; s+=ret+"B"; c=press(s); // cout<<c<<" "<<s<<endl; if(c==N){ s=ret+"A"; c=press(s); // cout<<c<<" "<<s<<endl; if(c==N){ ret+="A"; } else ret+="B"; } else{ s=ret+"X"; c=press(s); // cout<<c<<" "<<s<<endl; if(c==N){ ret+="X"; } else ret+="Y"; } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...