#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define forn(i, n) for (i = 0; i < n; i++)
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;
std::vector<std::vector<int>> devise_strategy(int N)
{
vector<vector<int>> ans(25, vector<int>(N + 1, 0));
ll i, j, act = 1, bit = 12, aBit = 12, aJ = 1, sig=3;
ans[0][0] = 0;
for (i = 1; i < 25; i += 2)
{
ans[i][0] = act;
ans[i + 1][0] = act;
if (act == 1)
act = 0;
else
act = 1;
}
for (j = 1; j <= N; j++)
ans[0][j] = 1+bool((1 << bit) & j);
bit--;
for (i = 1; i < 25; i++)
{
for (j = 1; j <= N; j++)
{
if (bool((1 << aBit) & j) > ((i + 1) % 2))
{
ans[i][j] = -aJ;
}
else if (bool((1 << aBit) & j) < ((i + 1) % 2))
{
if (aJ == 1)
ans[i][j] = -2;
else
ans[i][j] = -1;
}
else
{
if(((1 << bit) & j))
ans[i][j]=sig+1;
else
ans[i][j]=sig;
}
}
if (i % 2 == 0)
{
aBit=bit;
sig+=2;
bit--;
if (aJ == 1)
aJ = 2;
else
aJ = 1;
}
}
for (j = 1; j <= N; j++)
{
if(ans[23][j]>=25)
{
if(j&1)
ans[23][j]=-(ans[22][0]+1);
else
ans[23][j]=-(ans[23][0]+1);
}
if(ans[24][j]>=25)
{
if(j&1)
ans[24][j]=-(ans[22][0]+1);
else
ans[24][j]=-(ans[24][0]+1);
}
}
/*for (i = 0; i < sz(ans); i++)
{
cout << i << ": ";
for (ll j = 0; j < sz(ans[i]); j++)
{
cout << ans[i][j] << ' ';
}
cout << '\n';
}*/
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |