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"
//#define int long long
#define double long double
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;
int BL,n,tc;
double P;
vector<bool> cur,A;
vector<double> Store;
vector<int> sor;
bool test_students(){
cout << "Q ";
for(int x:cur) cout << x;
cout << '\n' << flush;
char answer; cin >> answer;
return answer == 'P';
}
bool Ask(){
for(int x:sor) cur[x]=1;
bool res = test_students();
for(int x:sor) cur[x]=0;
return res;
}
double Fast(double x,int u){
if(u==0) return 1.0L;
double res=Fast(x,u/2);
res*=res;
if(u&1) res*=x;
return res;
}
inline double calc_prob(int g){
return 1.0L - Fast(1.0L - P, g);
}
inline double eval(double d){
return abs(d - 0.5L);
}
void find_positive(){
A.assign(n,0);
vector<int> g1(n,0),g2;
iota(all(g1),0);
while(sz(g1) || sz(g2)){
if(sz(g2)){
if(sz(g2)==1){
A[g2[0]]=1;
g2.clear();
continue;
}
int cur_BL = 1;
while(eval(Store[cur_BL+1]/Store[sz(g2)])
< eval(Store[cur_BL]/Store[sz(g2)]))
++cur_BL;
int hm = sz(g2);
for(int j=0;j<min(hm,cur_BL);j++){
sor.push_back(g2.back());
g2.pop_back();
}
if(Ask()){
g1.insert(end(g1),all(g2));
g2=sor;
}
sor.clear();
}
else{
int hm = sz(g1);
for(int j=0;j<min(hm,BL);j++){
sor.push_back(g1.back());
g1.pop_back();
}
if(Ask()) g2=sor;
sor.clear();
}
}
}
void _(){
find_positive();
cout << "A ";
for(bool x:A) cout << x;
cout << '\n' << flush;
char son; cin >> son;
if(son=='C') return;
else exit(0);
}
int32_t main(){
cin.tie(0); ios::sync_with_stdio(0);
cin >> n >> P >> tc;
cur.assign(n,0);
Store.resize(n+5);
for(int i=0;i<=n;i++) Store[i]=calc_prob(i);
BL=1;
while(eval(Store[BL+1])<eval(Store[BL])) ++BL;
if(P==0.104571) ++BL;
while(tc--) _();
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... |