#include "prison.h"
#include <vector>
#include <algorithm>
using namespace std;
constexpr int N = 5005;
vector<vector<int>> a;
int n, maxbit;
bool ck[N];
#define bit(i, x) (((x) >> (i)) & 1)
void Recursive(int v)
{
if (ck[v])
return;
ck[v] = 1;
if (v == 0)
{
a[v][0] = 0;
for (int i = 1; i <= n; ++i)
a[v][i] = maxbit - 1 + (bit(maxbit, i) * maxbit) + 1;
for (int i = 1; i <= n; ++i)
if (a[v][i] > 0)
Recursive(a[v][i]);
return;
}
--v;
int number, state;
if (v >= maxbit)
{
state = 1;
number = v - maxbit;
}
else
{
state = 0;
number = v;
}
++number;
++v;
if ((number & 1) == (maxbit & 1))
{
a[v][0] = 1;
for (int i = 1; i <= n; ++i)
if (bit(number, i) < state)
a[v][i] = -2;
else if (bit(number, i) > state)
a[v][i] = -1;
else
{
if (number == 1)
{
if (bit(0, i))
a[v][i] = -1;
else
a[v][i] = -2;
}
else
a[v][i] = number - 1 + (bit(number - 1, i) * maxbit);
}
for (int i = 1; i <= n; ++i)
if (a[v][i] > 0)
Recursive(a[v][i]);
}
else
{
a[v][0] = 0;
for (int i = 1; i <= n; ++i)
if (bit(number, i) < state)
a[v][i] = -1;
else if (bit(number, i) > state)
a[v][i] = -2;
else
{
if (number == 1)
{
if (bit(0, i))
a[v][i] = -2;
else
a[v][i] = -1;
}
else
a[v][i] = number - 1 + (bit(number - 1, i) * maxbit);
}
for (int i = 1; i <= n; ++i)
if (a[v][i] > 0)
Recursive(a[v][i]);
}
}
std::vector<std::vector<int>> devise_strategy(int m)
{
n = m;
maxbit = __lg(n);
a.resize(5000, vector<int>(n + 1, 0));
Recursive(0);
while (!ck[a.size() - 1])
a.pop_back();
return a;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
0 ms |
468 KB |
Output is correct |
3 |
Correct |
3 ms |
5152 KB |
Output is correct |
4 |
Correct |
3 ms |
5412 KB |
Output is correct |
5 |
Correct |
9 ms |
10196 KB |
Output is correct |
6 |
Correct |
8 ms |
10196 KB |
Output is correct |
7 |
Correct |
1 ms |
980 KB |
Output is correct |
8 |
Correct |
6 ms |
7892 KB |
Output is correct |
9 |
Correct |
8 ms |
8532 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
3 ms |
5152 KB |
Output is correct |
4 |
Correct |
3 ms |
5460 KB |
Output is correct |
5 |
Correct |
8 ms |
10196 KB |
Output is correct |
6 |
Correct |
8 ms |
10196 KB |
Output is correct |
7 |
Correct |
1 ms |
724 KB |
Output is correct |
8 |
Correct |
2 ms |
3156 KB |
Output is correct |
9 |
Correct |
8 ms |
9640 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
1 ms |
520 KB |
Output is correct |
4 |
Partially correct |
30 ms |
43308 KB |
Output is partially correct |
5 |
Partially correct |
49 ms |
80572 KB |
Output is partially correct |
6 |
Partially correct |
60 ms |
98312 KB |
Output is partially correct |
7 |
Partially correct |
57 ms |
98324 KB |
Output is partially correct |
8 |
Correct |
1 ms |
932 KB |
Output is correct |
9 |
Correct |
7 ms |
7764 KB |
Output is correct |
10 |
Correct |
11 ms |
13396 KB |
Output is correct |
11 |
Correct |
26 ms |
39864 KB |
Output is correct |
12 |
Partially correct |
46 ms |
79360 KB |
Output is partially correct |