# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
95735 | ShaneOng | Combo (IOI18_combo) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
string guess_sequence(int N) {
string ans = "";
int a=press("A"),b=press("B"),c=press("X");
unordered_set<char> poss {'A','B','X','Y'};
if(a){
ans+="A";
poss.erase('A');
}else if(b){
ans+="B";
poss.erase('B');
}else if(c){
ans+="X";
poss.erase('X');
}else{
ans+="Y";
poss.erase('Y');
}
// printf("%d\n",poss.size());
for(int x=1;x<N-2;x++){
int temp=0;
string qu = "";
auto it = poss.begin();
qu+=ans + *it;
for(char c:poss){
qu+=ans+*next(it)+c;
}
//printf("%c %c %c\n",*next(it),*it,*next(next(it)));
//printf("%s\n",qu.c_str());
int coins=press(qu);
//printf("%s %d %d\n",qu.c_str(),coins,(int)ans.size());
// if(x==2)
// return 0;
if(coins==(int)ans.size())
ans+=*next(next(it));
else if(coins==2+(int)ans.size()){
ans+=*next(it);
}else
ans+=*it;
}
a=press(ans+*poss.begin()),b=press(ans+*next(poss.begin()));
if(a==N-1)
ans+=*poss.begin();
else if(b==N-1)
ans+=*next(poss.begin());
else
ans+=*next(next(poss.begin()));
a=press(ans+*poss.begin()),b=press(ans+*next(poss.begin()));
if(a==N)
ans+=*poss.begin();
else if(b==N)
ans+=*next(poss.begin());
else
ans+=*next(next(poss.begin()));
//cout<<ans;
return ans;
}