#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099
ll n,t,skok;
string p;
map<string,ll>mp;
char ch;
ll zap(ll l,ll r){
string s="";
for(ll j=0;j<l;j++)s.pb('0');
for(ll j=l;j<=r;j++)s.pb('1');
while(s.size()!=n)s.pb('0');
cout<<"Q "<<s<<endl;
cin>>ch;
return ch=='P';
}
void solve(){
string ans;
for(ll i=0;i<n;i++)ans.pb('0');
for(ll i=0;i<n;i+=skok){
if(zap(i,min(n-1,i+skok-1))){
ll pocz=i;
ll kon=min(n-1,i+skok-1);
while(pocz!=kon){
ll mid=(pocz+kon-1)/2;
if(zap(pocz,mid)){
kon=mid;
}
else{
pocz=mid+1;
}
}
ans[pocz]='1';
i=pocz+1-skok;
}
}
cout<<"A "<<ans<<endl;cin>>ch;
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>p>>t;
mp["0.2"]=3;
mp["0.158765"]=4;
mp["0.104571"]=7;
mp["0.068648"]=9;
mp["0.039856"]=16;
mp["0.028545"]=20;
mp["0.011546"]=64;
mp["0.005256"]=256;
mp["0.001"]=1024;
skok=mp[p];
if(!skok)skok=1;
while(t--)solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |