Submission #1197848

#TimeUsernameProblemLanguageResultExecution timeMemory
1197848user736482COVID tests (CEOI24_covid)C++20
100 / 100
1034 ms432 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...