#include<bits/stdc++.h>
#define int long long
#define ld double
#define _1 first
#define _2 second
#define yes cout<<"Yes\n"
#define nah cout<<"No\n"
#define FFF ios_base::sync_with_stdio(0);cin.tie(0);
#define ipr pair<int,int>
#define ret return
#define intt int32_t
#define mid ((l+r)/2)
#define pb push_back
#define lll __int128
#include "combo.h"
using namespace std;
int tst, ts;
intt mo = 1e9+7, dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0};
int mul( int x, int y ) {
ret ( ( x % mo ) * ( y % mo ) ) % mo;
ret x*y;
}
int pwo( int x, int y ) {
int res = 1;
for( int i = 63; i + 1; i-- )
res = mul( res, res * ( ( 1ll << i )&y ? x : 1 ) );
ret res;
}
int dvii( int x, int y ) {
ret mul( x, pwo( y, mo - 2 ) );
}
int oo( char x ) {
ret ( int )x - '0';
}
int lgg( int x, int y ) {
int u = 0;
while( x ) {
u++;
x /= y;
}
ret u;
}
int mun( int x, int y ) {
while( x < y )x += mo;
ret ( x - y ) % mo;
}
int add( int x, int y ) {
ret x + y - ( mo * ( x + y >= mo ) );
ret x + y;
}
int lcm( int x, int y ) {
ret ( x * y ) / __gcd( x, y );
}
#define endl '\n';
const int M =1007, N = 2e5 + 7, N2 = 5e3 + 7, inf = 2e18 + 7;
int n;
string guess_sequence(intt Nn){
n=Nn;
srand(time(0));
string s="",x="ABXY";
if(press("AB"))
s+=(press("A")?'A':'B');
else
s+=(press("X")?'X':'Y');
for(int i=0;i<4;i++)
if(x[i]==s[0])
swap(x[i],x[3]);
x.pop_back();
set<pair<int,string>>st;
for(int i=1;i<n;i++){
sort(x.begin(),x.end());
swap(x[2],x[rand()%3]);
st.insert({i,x});
}
while(st.size()>1){
/*cout<<endl;
for(auto i:st)
cout<<i._1<<" "<<i._2<<endl;
cout<<endl;*/
pair<int,string> a=*st.begin(),b=*(++st.begin());
st.erase(a),st.erase(b);
while(s.size()<=b._1)
s+=s[0];
string s1=s,s2=s,s3=s,s4=s;
s1[b._1]=b._2[0],s1[a._1]=a._2[0];
s2[b._1]=b._2[0],s2[a._1]=a._2[1];
s3[b._1]=b._2[1],s3[a._1]=a._2[0];
s4[b._1]=b._2[1],s4[a._1]=a._2[1];
if(b._2.size()<3){
int o=press(s1);
if(o==s1.size()){
s=s1;
continue;
}
if(o<a._1+1){
s=s2;
s[b._1]=s[0];
st.insert(b);
}
if(o>a._1)
s=s3;
}
else if(a._2.size()<3){
int o=press(s1+s3);
if(o==s1.size()){
s=s1;
s[b._1]=s[0];
b._2.pop_back();
swap(b._2[1],b._2[rand()%2]);
st.insert(b);
continue;
}
if(o<a._1+1){
s[a._1]=a._2[1];
s[b._1]=s[0];
st.insert(b);
}
if(o>a._1){
s=s1;
s[b._1]=b._2[2];
}
}
else{
int o=press(s1+s2+s3+s4);
if(o==s1.size()){
s=s1;
b._2.pop_back();
a._2.pop_back();
swap(b._2[1],b._2[rand()%2]);
swap(a._2[1],a._2[rand()%2]);
st.insert(a),st.insert(b);
continue;
}
if(o<a._1+1){
s[b._1]=s[0];
s[a._1]=a._2[2];
st.insert(b);
}
if(o>a._1){
a._2.pop_back();
swap(a._2[1],a._2[rand()%2]);
st.insert(a);
s[a._1]=s[0];
s[b._1]=b._2[2];
}
}
}
if(s.size()<n)
s+=s[0];
if(st.size()){
pair<int,string>p=*st.begin();
string ss=s;
s[p._1]=p._2[0],ss[p._1]=p._2[1];
if(p._2.size()==2){
if(press(ss)==n)
swap(s,ss);
}
else{
if(press(ss+s)<n)
s[p._1]=p._2[2];
else{
if(press(ss)==n)
swap(s,ss);
}
}
}
//cout<<n<<endl;
ret s;
}
/*
void solve(){
}
intt main() {
FFF
// freopen("fcolor.in", "r", stdin);
// freopen("fcolor.out", "w", stdout);
tst = 1;
//cin >> tst;
for ( ts = 1; ts <= tst; ts++ ){
solve();
}
}
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |