# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
940990 | LittleFlowers__ | Toxic Gene (NOI23_toxic) | C++17 | 8 ms | 504 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "toxic.h"
using namespace std;
void determine_type (int n) {
auto query_wrapper = [&](vector<int> q) {
for (const int& i : q) assert(1 <= i && i <= n);
int result = query_sample(q);
assert(result != -1);
return result;
};
vector<bool> answered(n + 1, false);
auto answer_wrapper = [&](int i, char ch) {
assert(!answered[i] && 1 <= i && i <= n && (ch == 'S' || ch == 'T' || ch == 'R'));
answer_type(i, ch);
answered[i] = true;
return;
};
vector<bool> mark(n + 1);
int toxic = 0;
for(int i = 1; i <= n; i++) mark[i] = 0;
for(int i = 1; i <= n; i++) if (query_wrapper({i}) == 0) {
answer_wrapper(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_wrapper(ask);
for(int k = 0; k < j - i; k++) if (!mark[i + k]) {
if (result >> k & 1) answer_wrapper(i + k, 'S');
else answer_wrapper(i + k, 'R');
}
i = j;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |