#include <bits/stdc++.h>
using namespace std;
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
int n;double p;
void solve() {
int block=(double)(1)/p;//ver melhor constante
if(block==0)block=1;
block=__lg(block);
block=(1<<(block));
vector<int> resp(n,0);
vector<int> aux(n,0);
auto ask=[&](int l, int r)->bool{
L(i,l,r)aux[i]=1;
cout<<"Q ";
L(i,0,n-1)cout<<aux[i];
cout<<endl;
L(i,l,r)aux[i]=0;
char c;cin>>c;
return c=='P';
};
auto busca=[&](auto&& self, int l, int r)->void{
int m=(l+r)/2;
if(l==r){
resp[l]=1;
return;
}
if(ask(l,m))self(self,l,m);
if(ask(m+1,r))self(self,m+1,r);
return;
};
if(ask(0,n-1))busca(busca,0,n-1);
cout<<"A ";
for(auto a:resp)cout<<a;
cout<<endl;
char c;cin>>c;
}
int32_t main() {
int T = 1;
// std::cin >> T;
cin>>n>>p>>T;
while(T--) {
solve();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |