#include <bits/stdc++.h>
#include "koala.h"
using namespace std;
int minValue(int N, int W) {
// TODO: Implement Subtask 1 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
int A[N], B[N];
for(int i = 0; i < N; i++) {
if(i) A[i] = 0;
else A[i] = 1;
}
playRound(A, B);
for(int i = 0; i < N; i++) {
if(A[i] >= B[i]) return i;
}
return 0;
}
int maxValue(int N, int W) {
// TODO: Implement Subtask 2 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
vector <int> can;
for(int i = 0; i < N; i++) can.emplace_back(i);
int A[N], B[N];
while(can.size() > 1) {
int i = W / can.size();
i = min(10, i);
memset(A, 0, sizeof A);
for(int j : can) {
A[j] = i;
}
playRound(A, B);
vector <int> aux;
for(int j : can) {
if(A[j] < B[j]) aux.emplace_back(j);
}
swap(can, aux);
if(can.size() == 1) return can[0];
}
return 0;
}
int cmp(int sz, int coin, int N, int W) {
// TODO: Implement Subtask 3 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
if(N == W) return 0;
int l = 1, r = min(13, coin / 2);
int A[sz], B[sz];
while(l <= r) {
int m = (l + r) >> 1;
memset(A, 0, sizeof A);
A[N] = A[W] = m;
playRound(A, B);
if(A[N] < B[N] && A[W] < B[W]) {
l = m + 1;
} else if (A[N] >= B[N] && A[W] >= B[W]) {
r = m - 1;
} else {
return B[N] < B[W];
}
}
return 0;
}
int greaterValue(int N, int W) {
return cmp(N, W, 0, 1);
}
void selfSort(vector <int> &v, function <bool (int, int)> f) {
if(v.size() == 3) {
if(f(v[1], v[0])) swap(v[0], v[1]);
if(f(v[2], v[1])) swap(v[1], v[2]);
if(f(v[1], v[0])) swap(v[0], v[1]);
return ;
}
if(v.size() <= 1) return ;
vector <int> l, r;
int m = v.size() / 2;
for(int i = 0; i < m; i++) l.emplace_back(v[i]);
for(int i = m; i < v.size(); i++) r.emplace_back(v[i]);
v.clear();
selfSort(l, f);
selfSort(r, f);
int i = 0, j = 0;
while(i < l.size() || j < r.size()) {
if(i < l.size() && j < r.size()) {
if(f(l[i], r[j])) v.emplace_back(l[i++]);
else v.emplace_back(r[j++]);
} else if (i < l.size()) v.emplace_back(l[i++]);
else v.emplace_back(r[j++]);
}
}
void getAll(vector <int> &v, int N, int W) {
int opt = W / v.size();
if(opt > 10) {
selfSort(v, [&] (int i, int j) { return cmp(N, W, i, j); });
return ;
}
int A[N], B[N];
memset(A, 0, sizeof A);
for(int i : v) {
A[i] = opt;
}
playRound(A, B);
vector <int> left, right;
for(int i : v) {
if(A[i] < B[i]) right.emplace_back(i);
else left.emplace_back(i);
}
if(left.empty() || right.empty()) {
selfSort(v, [&] (int i, int j) { return cmp(N, W, i, j); });
} else {
getAll(left, N, W);
getAll(right, N, W);
v = left;
for(int i : right) v.emplace_back(i);
}
}
void allValues(int N, int W, int *P) {
vector <int> v (N);
for(int i = 0; i < N; i++) {
v[i] = i;
}
getAll(v, N, W);
for(int i = 0; i < N; i++) {
P[v[i]] = i + 1;
}
}
Compilation message
koala.cpp: In function 'void selfSort(std::vector<int>&, std::function<bool(int, int)>)':
koala.cpp:82:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = m; i < v.size(); i++) r.emplace_back(v[i]);
~~^~~~~~~~~~
koala.cpp:87:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(i < l.size() || j < r.size()) {
~~^~~~~~~~~~
koala.cpp:87:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(i < l.size() || j < r.size()) {
~~^~~~~~~~~~
koala.cpp:88:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i < l.size() && j < r.size()) {
~~^~~~~~~~~~
koala.cpp:88:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i < l.size() && j < r.size()) {
~~^~~~~~~~~~
koala.cpp:91:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
} else if (i < l.size()) v.emplace_back(l[i++]);
~~^~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
384 KB |
Output is correct |
2 |
Correct |
9 ms |
384 KB |
Output is correct |
3 |
Correct |
10 ms |
384 KB |
Output is correct |
4 |
Correct |
9 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
25 ms |
384 KB |
Output is partially correct |
2 |
Partially correct |
26 ms |
384 KB |
Output is partially correct |
3 |
Partially correct |
25 ms |
384 KB |
Output is partially correct |
4 |
Partially correct |
25 ms |
384 KB |
Output is partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
66 ms |
384 KB |
Output is correct |
2 |
Correct |
72 ms |
404 KB |
Output is correct |
3 |
Correct |
65 ms |
384 KB |
Output is correct |
4 |
Correct |
68 ms |
384 KB |
Output is correct |
5 |
Correct |
65 ms |
384 KB |
Output is correct |
6 |
Correct |
64 ms |
420 KB |
Output is correct |
7 |
Correct |
63 ms |
384 KB |
Output is correct |
8 |
Correct |
65 ms |
384 KB |
Output is correct |
9 |
Correct |
64 ms |
384 KB |
Output is correct |
10 |
Correct |
66 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
62 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
12 ms |
384 KB |
Output is partially correct |
2 |
Partially correct |
14 ms |
404 KB |
Output is partially correct |
3 |
Partially correct |
15 ms |
384 KB |
Output is partially correct |
4 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
5 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
6 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
7 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
8 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
9 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
10 |
Partially correct |
15 ms |
384 KB |
Output is partially correct |
11 |
Partially correct |
15 ms |
384 KB |
Output is partially correct |
12 |
Partially correct |
13 ms |
384 KB |
Output is partially correct |
13 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
14 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
15 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
16 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
17 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
18 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
19 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
20 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
21 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
22 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
23 |
Partially correct |
13 ms |
384 KB |
Output is partially correct |
24 |
Partially correct |
15 ms |
384 KB |
Output is partially correct |
25 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
26 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
27 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
28 |
Partially correct |
14 ms |
400 KB |
Output is partially correct |
29 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
30 |
Partially correct |
13 ms |
384 KB |
Output is partially correct |
31 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
32 |
Partially correct |
14 ms |
416 KB |
Output is partially correct |
33 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
34 |
Partially correct |
14 ms |
408 KB |
Output is partially correct |
35 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
36 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
37 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
38 |
Partially correct |
14 ms |
384 KB |
Output is partially correct |
39 |
Partially correct |
15 ms |
384 KB |
Output is partially correct |
40 |
Partially correct |
15 ms |
384 KB |
Output is partially correct |