Submission #1038849

#TimeUsernameProblemLanguageResultExecution timeMemory
1038849WarinchaiCOVID tests (CEOI24_covid)C++14
52.95 / 100
1656 ms344 KiB
#include<bits/stdc++.h> #pragma GCC optimize("O3") #pragma GCC target("avx2") using namespace std; int n,t; double p; int use=0; int ask(string v){ //use++; cout<<"Q "; cout<<v; cout<<endl; //cerr<<"input:"<<endl; char ans; cin>>ans; //cerr<<ans<<endl; return ans=='P'?1:0; } string temp; string ans; void fans(int st,int en){ //cerr<<st<<" "<<en<<endl; if(st==en){ temp[st]='1'; ans[st]=ask(temp)?'1':'0'; temp[st]='0'; return; } if(st>en)return; int m=(st+en)/2; for(int i=st;i<=m;i++)temp[i]='1'; bool tans;tans=ask(temp); for(int i=st;i<=m;i++)temp[i]='0'; if(tans){ if(st==m)ans[st]='1'; else fans(st,m); for(int i=m+1;i<=en;i++)temp[i]='1'; tans=ask(temp); for(int i=m+1;i<=en;i++)temp[i]='0'; if(tans){ if(m+1==en)ans[en]='1'; else fans(m+1,en); } }else{ if(m+1==en)ans[en]='1'; else fans(m+1,en); } } double pp[9]={0.001,0.005256,0.011546,0.028545,0.039856,0.068648,0.104571,0.158765,0.2}; double ep=0.0001; //int mx[9]={15,51,94,191,246,366,490,639,731}; //int mx[9]={5,10,94,50,125,125,250,250,250}; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>p>>t; temp=string(n,'0'); int cur=-1; for(int i=0;i<9;i++)if(abs(pp[cur]-p)<ep)cur=i; int div=128; //int prob=1000/div; //cerr<<"prob:"<<prob<<endl; //cerr<<"div:"<<div<<endl; while(t--){ //cerr<<"work"<<endl; ans=string(n,'0'); use=0; int i=1; for(;i*div-1<n;i++){ //cerr<<"prob-"<<i<<endl; string t(n,'0'); for(int j=div*(i-1);j<=div*i-1;j++)t[j]='1'; if((i-1)*div==div*i-1||ask(t))fans(div*(i-1),div*i-1); for(int j=div*(i-1);j<=div*i-1;j++)t[j]='0'; } if((i-1)*div<n){ string temp(n,'0'); for(int j=div*(i-1);j<=n-1;j++)temp[j]='1'; if((i-1)*div==n-1||ask(temp))fans(div*(i-1),n-1); } cout<<"A "; cout<<ans; cout<<endl; char res; cin>>res; //cerr<<"use:"<<use<<endl; if(res=='W')break; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...