#include "bits/stdc++.h"
//#define int long long
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;
mt19937 rng(time(nullptr));
int BL,n,tc=1;
double p;
vector<bool> A;
vector<int> ar;
double fast_pow(double x,int b){
if(b==0) return 1.0;
double res = fast_pow(x,b/2);
res*=res;
if(b&1) res*=x;
return res;
}
void update_block(int rem){
int l=1,r=rem;
while(l<r){
int mid=(l+r+1)/2;
if(fast_pow(p,mid)>=0.5) l=mid;
else r=mid-1;
}
BL=l;
}
bool test_students(vector<bool> mask){
cout << "Q ";
for(int x:mask) cout << x;
cout << endl << flush;
char answer; cin >> answer;
return answer == 'P';
}
bool ask_range(int l,int r){
vector<bool> cur(n,0);
for(int i=l;i<=r;i++) cur[ar[i]]=1;
return test_students(cur);
}
int find_first(int l,int r){
if(l==r) return l;
int m=(l+r)/2;
if(ask_range(l,m)) return find_first(l,m);
return find_first(
m+1,r);
}
vector<bool> find_positive(){
A.assign(n,0);
for(int i=0;i<n;){
update_block(n-i);
if(!ask_range(i,i+BL-1)){
i+=BL;
continue;
}
int lmao = find_first(i,i+BL-1);
A[ar[lmao]]=1;
i=lmao+1;
}
return A;
}
void _(){
vector<bool> GG=find_positive();
cout << "A ";
for(bool x:GG) cout << x;
cout << endl << flush;
char son; cin >> son;
if(son=='C') return;
else exit(0);
}
int32_t main(){
cin.tie(0); ios::sync_with_stdio(0);
cin >> n >> p >> tc;
p=1.0-p;
update_block(n);
ar.assign(n,0);
iota(all(ar),0LL);
shuffle(all(ar),rng);
while(tc--) _();
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
37 ms |
344 KB |
Output is correct |
2 |
Correct |
45 ms |
344 KB |
Output is correct |
3 |
Correct |
30 ms |
344 KB |
Output is correct |
4 |
Correct |
38 ms |
596 KB |
Output is correct |
5 |
Correct |
32 ms |
344 KB |
Output is correct |
6 |
Correct |
32 ms |
344 KB |
Output is correct |
7 |
Correct |
39 ms |
344 KB |
Output is correct |
8 |
Correct |
35 ms |
344 KB |
Output is correct |
9 |
Correct |
51 ms |
344 KB |
Output is correct |
10 |
Correct |
20 ms |
344 KB |
Output is correct |
11 |
Correct |
47 ms |
352 KB |
Output is correct |
12 |
Correct |
30 ms |
352 KB |
Output is correct |
13 |
Correct |
42 ms |
504 KB |
Output is correct |
14 |
Correct |
30 ms |
352 KB |
Output is correct |
15 |
Correct |
30 ms |
352 KB |
Output is correct |
16 |
Correct |
32 ms |
352 KB |
Output is correct |
17 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
124 ms |
344 KB |
Output is correct (P=0.001, F=15.1, Q=10.9) -> 90.00 points |
2 |
Correct |
519 ms |
344 KB |
Output is correct (P=0.005256, F=51.1, Q=46.6) -> 90.00 points |
3 |
Correct |
1002 ms |
344 KB |
Output is correct (P=0.011546, F=94.9, Q=91.0) -> 90.00 points |
4 |
Correct |
2049 ms |
344 KB |
Output is correct (P=0.028545, F=191.5, Q=190.8) -> 90.00 points |
5 |
Correct |
2619 ms |
344 KB |
Output is correct (P=0.039856, F=246.3, Q=246.4) -> 89.85 points |
6 |
Correct |
3993 ms |
344 KB |
Output is correct (P=0.068648, F=366.2, Q=372.5) -> 84.21 points |
7 |
Correct |
5220 ms |
344 KB |
Output is correct (P=0.104571, F=490.3, Q=500.0) -> 83.40 points |
8 |
Correct |
6524 ms |
344 KB |
Output is correct (P=0.158765, F=639.1, Q=632.9) -> 90.00 points |
9 |
Execution timed out |
7039 ms |
344 KB |
Time limit exceeded |
10 |
Halted |
0 ms |
0 KB |
- |