#include<bits/stdc++.h>
#include<toxic.h>
#define fi first
#define se second
#define endl "\n"
#define ii pair<int, int>
using namespace std;
const int N = 300 + 10;
bool mark[N];
#ifdef ngu
int cnt_query;
char a[N], b[N];
int query_sample(vector<int> species) {
cnt_query++;
bool toxic = 0;
for(int &j : species) toxic |= a[j] == 'T';
int ret = 0;
for(int &j : species) {
if (a[j] == 'S') ret++;
else if (a[j] == 'R' && !toxic) ret++;
}
return ret;
}
void answer_type(int x, char c) {
b[x] = c;
}
#endif // ngu
void determine_type (int n) {
int timer = 0;
for(int i = 1; i <= 300; i++) for(int j = 1; j <= 300; j++) for(int k = 1; k <= 300; k++) timer++;
int toxic = 0;
for(int i = 1; i <= n; i++) mark[i] = 0;
for(int i = 1; i <= n; i++) if (query_sample({i}) == 0) {
answer_type(i, 'T');
toxic = i;
mark[i] = 1;
}
for(int i = 1; i <= n;) {
int cur = 1;
vector<int> ask;
ask.push_back(toxic);
int j = i;
while (ask.size() + cur <= 300 && j <= n) {
for(int k = 1; k <= cur; k++) ask.push_back(j);
cur *= 2;
j++;
}
int result = query_sample(ask);
for(int k = 0; k < j - i; k++) if (!mark[i + k]) {
if (result >> k & 1) answer_type(i + k, 'S');
else answer_type(i + k, 'R');
}
i = j;
}
}
#ifdef ngu
int main() {
freopen ("task.inp", "r", stdin);
freopen ("task.out", "w", stdout);
int t; cin >> t;
while (t--) {
cnt_query = 0;
int n; cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
determine_type(n);
for(int i = 1; i <= n; i++) assert(a[i] == b[i]);
for(int i = 1; i <= n; i++) cout << b[i] << " "; cout << endl;
assert(cnt_query <= 600);
cerr << cnt_query << endl;
}
}
#endif // ngu
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Partially correct |
4 ms |
348 KB |
Partially correct |
3 |
Partially correct |
4 ms |
600 KB |
Partially correct |
4 |
Partially correct |
5 ms |
348 KB |
Partially correct |
5 |
Partially correct |
4 ms |
348 KB |
Partially correct |
6 |
Partially correct |
4 ms |
348 KB |
Partially correct |
7 |
Partially correct |
4 ms |
348 KB |
Partially correct |
8 |
Partially correct |
4 ms |
348 KB |
Partially correct |
9 |
Partially correct |
4 ms |
348 KB |
Partially correct |
10 |
Partially correct |
4 ms |
348 KB |
Partially correct |
11 |
Partially correct |
5 ms |
496 KB |
Partially correct |
12 |
Partially correct |
4 ms |
344 KB |
Partially correct |
13 |
Partially correct |
4 ms |
348 KB |
Partially correct |
14 |
Partially correct |
5 ms |
344 KB |
Partially correct |
15 |
Partially correct |
4 ms |
480 KB |
Partially correct |
16 |
Partially correct |
4 ms |
600 KB |
Partially correct |
17 |
Partially correct |
4 ms |
348 KB |
Partially correct |
18 |
Partially correct |
4 ms |
348 KB |
Partially correct |
19 |
Partially correct |
4 ms |
348 KB |
Partially correct |
20 |
Partially correct |
4 ms |
348 KB |
Partially correct |
21 |
Partially correct |
4 ms |
500 KB |
Partially correct |
22 |
Partially correct |
4 ms |
348 KB |
Partially correct |
23 |
Partially correct |
3 ms |
348 KB |
Partially correct |
24 |
Partially correct |
4 ms |
500 KB |
Partially correct |
25 |
Partially correct |
4 ms |
344 KB |
Partially correct |
26 |
Partially correct |
4 ms |
348 KB |
Partially correct |
27 |
Partially correct |
5 ms |
348 KB |
Partially correct |
28 |
Partially correct |
3 ms |
496 KB |
Partially correct |
29 |
Partially correct |
3 ms |
348 KB |
Partially correct |
30 |
Partially correct |
4 ms |
348 KB |
Partially correct |
31 |
Partially correct |
4 ms |
348 KB |
Partially correct |
32 |
Partially correct |
3 ms |
348 KB |
Partially correct |
33 |
Partially correct |
3 ms |
500 KB |
Partially correct |
34 |
Partially correct |
4 ms |
348 KB |
Partially correct |
35 |
Partially correct |
4 ms |
348 KB |
Partially correct |
36 |
Partially correct |
1 ms |
348 KB |
Partially correct |