#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
bool pres[MAXN];
int n, w;
vector<int> query(vector<int> &inp) {
int *a = new int[n];
int *b = new int[n];
for (int i = 0; i < n; i++) a[i] = inp[i];
playRound(a, b);
vector<int> out;
for (int i = 0; i < n; i++) {
if (b[i] > inp[i]) out.push_back(i);
}
delete[] a;
delete[] b;
return out;
}
vector<int> complement(vector<int> inp) {
fill(pres, pres+n, 0);
for (int v: inp) pres[v] = 1;
vector<int> out;
for (int i = 0; i < n; i++)
if (!pres[i]) out.push_back(i);
return out;
}
vector<int> inter(vector<int> a, vector<int> &b) {
fill(pres, pres+n, 0);
for (int v: a) pres[v] = 1;
vector<int> out;
for (int v: b)
if (pres[v]) out.push_back(v);
return out;
}
int minValue(int N, int W) {
n = N; w = W;
vector<int> vals(n, 0);
vals[0] = 1;
return complement(query(vals))[0];
}
int maxValue(int N, int W) {
n = N; w = W;
vector<int> cur(n, 0);
iota(cur.begin(), cur.end(), 0);
while (cur.size() > 1) {
int put = n/cur.size();
vector<int> qry(n, 0);
for (int v: cur) qry[v] = put;
cur = inter(query(qry), cur);
}
return cur[0];
}
int greaterValue(int N, int W) {
n = N; w = W;
vector<int> put({1, 2, 5, 10});
int mn = -1, mx = 4;
vector<int> two({0, 1});
while (mx > mn+1) {
int cur = (mn+mx)/2;
vector<int> qry(n, 0);
qry[0] = qry[1] = put[cur];
vector<int> vals = inter(query(qry), two);
if (vals.size() == 2) mn = cur;
else if (vals.empty()) mx = cur;
else {
return vals[0];
}
}
assert(false);
return 0;
}
struct comp {
bool operator()(int &a, int &b) {
vector<int> qry(n, 0);
qry[a] = qry[b] = n;
vector<int> two({a, b});
return inter(query(qry), two)[0] == b;
}
} comp;
void allValues(int N, int W, int *P) {
n = N; w = W;
if (W == 2*N) {
vector<int> ans(n);
iota(ans.begin(), ans.end(), 0);
sort(ans.begin(), ans.end(), comp);
for (int i = 0; i < n; i++) P[ans[i]] = i+1;
} else {
// TODO: Implement Subtask 5 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
208 KB |
Output is correct |
2 |
Correct |
3 ms |
208 KB |
Output is correct |
3 |
Correct |
3 ms |
208 KB |
Output is correct |
4 |
Correct |
3 ms |
208 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
324 KB |
Output is correct |
2 |
Correct |
10 ms |
208 KB |
Output is correct |
3 |
Correct |
10 ms |
208 KB |
Output is correct |
4 |
Correct |
10 ms |
208 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
67 ms |
336 KB |
Output is correct |
2 |
Correct |
61 ms |
324 KB |
Output is correct |
3 |
Correct |
65 ms |
336 KB |
Output is correct |
4 |
Correct |
74 ms |
320 KB |
Output is correct |
5 |
Correct |
62 ms |
332 KB |
Output is correct |
6 |
Correct |
60 ms |
328 KB |
Output is correct |
7 |
Correct |
62 ms |
332 KB |
Output is correct |
8 |
Correct |
61 ms |
332 KB |
Output is correct |
9 |
Correct |
64 ms |
340 KB |
Output is correct |
10 |
Correct |
60 ms |
324 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
31 ms |
296 KB |
Output is correct |
2 |
Incorrect |
32 ms |
312 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
208 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |