제출 #1137714

#제출 시각아이디문제언어결과실행 시간메모리
1137714ghammazhassanCOVID tests (CEOI24_covid)C++20
29.93 / 100
530 ms408 KiB
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
using namespace std;
#define int long long
#define endl "\n";
const int N=2e5+5;
const int M=1e9+7;
int n;
double p;
void solve2()
{
	string s,r;
	for (int i=0;i<n;i++){
		s+='0';
		r+='0';
	}
	for (int i=0;i<n;i++){
		s[i]='1';
		cout << "Q " << s << endl;
		char u;
		cin >> u;
		if (u=='P'){
			r[i]='1';
		} 
		s[i]='0';
	}
	cout << "A " << r << endl;
	char e;
	cin >> e;
	if (e=='C'){
		return;
	}
	else{
		exit(0);
	}
}
void solve()
{
	string s,w;
	for (int i=0;i<n;i++){
		s+='0';
		w+='2';
	}
	int co=max((1/p)/3.7,(double)1);
	int l=0,r=min(co,n-1);
	while (l<n){
		for (int i=l;i<=r;i++){
			s[i]='1';
		}
		cout << "Q "+s << endl;
		char k;
		cin >> k;
		int y1=l,y2=r;
		if (k=='N'){
			for (int i=l;i<=r;i++){
				w[i]='0';
			}
			l=r+1;
			r=min(l+co,n-1);
		}
		else{
			if (l!=r){
				r=(l+r)/2;
				if (l==r){
					s[l+1]='0';
					cout << "Q "+s << endl;
					char k;
					cin >> k;
					if (k=='N'){
						w[l]='0';
						w[l+1]='1';
						l=r+2;
						r=min(l+co,n-1);
					}
					else{
						w[l]='1';
						l=r+1;
						r=min(l+co,n-1);
					}
				}
			}
			else{
				w[l]='1';
				l=r+1;
				r=min(l+co,n-1);
			}
		}
		for (int i=y1;i<=y2;i++){
			s[i]='0';
		}
	}
	cout << "A " << w << endl;
	char e;
	cin >> e;
	if (e=='C'){
		return;
	}
	else{
		exit(0);
	}
}		


signed main()
{

    cout << fixed<<setprecision(9);
    int t=1;
    cin >> n >> p >> t;
    if (t==1){
    	solve2();
    	return 0;
    }
    for (int _=1;_<=t;_++){
    	solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...