제출 #1204220

#제출 시각아이디문제언어결과실행 시간메모리
1204220NK_COVID tests (CEOI24_covid)C++20
42.29 / 100
825 ms436 KiB
// Success consists of going from failure to failure without loss of enthusiasm
#include <bits/stdc++.h>

using namespace std;

#define nl '\n'
#define pb push_back
#define sz(x) int(x.size())

template<class T> using V = vector<T>;
using vi = V<int>;

int N;
double P;

bool qry(vi sample) {
	if (sz(sample) == 0) return false;
    // assert(mask.size() == (size_t)N);

    string mask_str(N, '0');
    for(auto& i : sample) mask_str[i] = '1';

    printf("Q %s\n", mask_str.c_str());
    fflush(stdout);

    char answer;
    scanf(" %c", &answer);
    return answer == 'P';
}


vi get() {
	vi ans;

    int K = 3;
    vi X; for(int i = 0; i < N; i++) X.pb(i);

    function<void(vi)> dnc = [&](vi A) {
    	if (sz(A) == 1) {
    		ans.pb(A.front());
    		return;
    	}

    	V<vi> S(K);
    	for(int i = 0; i < sz(A); i++) S[i % K].pb(A[i]);
    	for(int i = 0; i < K; i++) if (qry(S[i])) dnc(S[i]);
    };

	dnc(X);

    return ans;
}

int main() {
    int T;
    scanf("%d %lf %d", &N, &P, &T);

    // You may perform any extra initialization here.

    for (int i = 0; i < T; i++) {
		vi answer = get();
        // assert(answer.size() == (size_t)N);

       	string answer_str(N, '0');
        for(auto& i : answer) answer_str[i] = '1';

        printf("A %s\n", answer_str.c_str());
        fflush(stdout);

        char verdict;
        scanf(" %c", &verdict);
        if (verdict == 'W')
            exit(0-0);
    }

    return 0;
}

// Breathe In, Breathe Out

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'bool qry(vi)':
Main.cpp:27:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |     scanf(" %c", &answer);
      |     ~~~~~^~~~~~~~~~~~~~~~
Main.cpp: In function 'int main()':
Main.cpp:56:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |     scanf("%d %lf %d", &N, &P, &T);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:71:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   71 |         scanf(" %c", &verdict);
      |         ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...