제출 #1367224

#제출 시각아이디문제언어결과실행 시간메모리
1367224takoshanavaCOVID tests (CEOI24_covid)C++20
0 / 100
11 ms2892 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];
set<string> asked;

bool ask(string s) {
    cout << "Q " << s << endl;
    cout.flush();
    char c;
    cin >> c;
    bool res = 0;
    if (c == 'P') res = 1;
    return 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 (asked.find(s) != asked.end()) return;
        if (ask(s)) ans[l] = '1';
        else ans[l] = '0';
        asked.insert(s);
        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';

    if (asked.find(s) == asked.end()) {
        bool ok = ask(s);
        asked.insert(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';

    if (asked.find(s) == asked.end()) {
        bool ok = ask(s);
        asked.insert(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--) {
        go(0, n - 1);
        asked.clear();
        cout << "A ";
        for (int i = 0; i < n; i++) cout << ans[i];
        cout << endl;
        char c;
        cin >> c;
    }
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…