Submission #1367240

#TimeUsernameProblemLanguageResultExecution timeMemory
1367240takoshanavaCOVID tests (CEOI24_covid)C++20
37.12 / 100
1622 ms3052 KiB
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;

const int N = 1005;
int n, t;
char ans[N];

map<string, bool> asked;

bool ask(string s) {
    if (asked.count(s)) return asked[s];
    cout << "Q " << s << endl;
    cout.flush();
    char c;
    cin >> c;
    bool res = 0;
    if (c == 'P') res = 1;
    return asked[s] = res;
}

void go(int l, int r) {
    if (l > r) return;
    if (l == r) {
        string s = "";
        for (int i = 0; i < n; i++) s += '0';
        s[l] = '1';
        if (ask(s)) ans[l] = '1';
        else ans[l] = '0';
        return;
    }

    string s = "";
    int mid = (l + r) / 2;

    for (int i = 0; i < n; i++) s += '0';
    for (int i = l; i <= mid; i++) s[i] = '1';

    bool ok = ask(s);

    if (ok) go(l, mid);
    else for (int i = l; i <= mid; i++) ans[i] = '0';

    s.clear();
    for (int i = 0; i < n; i++) s += '0';
    for (int i = mid + 1; i <= r; i++) s[i] = '1';
    ok = ask(s);
    if (ok) go(mid + 1, r);
    else for (int i = mid + 1; i <= r; i++) ans[i] = '0';
}

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

    double p;
    cin >> n >> p >> t;
    while (t--) {
        asked.clear();

        for (int i = 0; i < n; i++) ans[i] = '0';
        go(0, n - 1);
        cout << "A ";
        for (int i = 0; i < n; i++) cout << ans[i];
        cout << endl;
        cout.flush();
        char c;
        cin >> c;
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...