Submission #1279996

#TimeUsernameProblemLanguageResultExecution timeMemory
1279996loomCOVID tests (CEOI24_covid)C++20
87.57 / 100
580 ms476 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define inf (int)5e18
#define nl endl

int n, x;

int qry(int l, int r){
   cout<<"Q "<<string(l, '0') + string(r-l+1, '1') + string(n-1-r, '0')<<nl;

   char c;
   cin>>c;
   return c == 'P';
}

void solve(){
   string ans(n, '0');

   for(int i = 0; i < n;){
      int l = i, r = min(i+x-1, n-1);
      if(!qry(l, r)){
         i += x;
         continue;
      }

      while(l < r){
         int m = (l+r)/2;

         if(qry(l, m)) r = m;
         else l = m+1;
      }

      ans[l] = '1';
      i = l+1;
   }

   cout<<"A "<<ans<<nl;

   char c;
   cin>>c;
   if(c == 'W') exit(0);
}

signed main(){
   ios_base::sync_with_stdio(0);
   cin.tie(NULL);cout.tie(NULL);

   int t = 1;
   ld p;
   cin>>n>>p>>t;

   if(p < 0.002) x = 1000;
   else if(p < 0.006) x = 126;
   else if(p < 0.02) x = 64;
   else if(p < 0.029) x = 24;
   else if(p < 0.04) x = 16;
   else if(p < 0.07) x = 8;
   else if(p < 0.11) x = 7;
   else if(p < 0.16) x = 4;
   else x = 3;

   if(t == 1) x = 1;

   while(t--) solve();

   return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...