#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
namespace
{
const int MAXN = 105;
int who[MAXN][MAXN];
}
void Anna(int N, int K, std::vector<int> R, std::vector<int> C)
{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
who[i][j] = (i%3) * 3 + (j%3);
who[i][j] -= 2;
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
int val = who[i][j];
if(val < 0)
SetFlag(i, j, 1);
else if(R[val] < i - 1)
SetFlag(i, j, 2 + 3);
else if(R[val] > i + 1)
SetFlag(i, j, 2 + 2);
else if(C[val] < j - 1)
SetFlag(i, j, 2 + 1);
else if(C[val] > j + 1)
SetFlag(i, j, 2 + 0);
else
{
assert(i - 1 <= R[val] && R[val] <= i + 1 && j - 1 <= C[val] && C[val] <= j + 1);
int mini_poz = (R[val] - (i - 1)) * 3 + (C[val] - (j - 1));
SetFlag(i, j, 6 + mini_poz);
}
}
}
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
namespace
{
int variable_example = 1;
} // namespace
std::vector<int> Bruno(int K, std::vector<int> flags)
{
int mat[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
mat[i][j] = flags[i*3 + j];
bool gasit = 0;
int rx, ry;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(mat[i][j] == 1 && mat[i][(j+1)%3] == 1)
{
assert(!gasit);
gasit = 1;
rx = i;
ry = j;
}
}
}
assert(gasit);
int newmat[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
newmat[i][j] = mat[(rx + i) % 3][(ry + j) % 3];
}
}
int me_x = (1 - rx + 3) % 3;
int me_y = (1 - ry + 3) % 3;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
mat[i][j] = newmat[i][j];
vector<int> ans(K);
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
int who = i*3 + j, myf = mat[i][j];
who -= 2;
if(who < 0)
{
assert(myf == 1);
continue;
}
assert(myf != 1);
assert(0 <= who && who < K);
if(myf <= 5)
{
ans[who] = myf - 2;
}
else
{
myf -= 6;
int dx = myf / 3, dy = myf % 3;
int actual_x = (i - 1) + dx, actual_y = (j - 1) + dy;
if(actual_y > me_y)
ans[who] = 0;
else if(actual_y < me_y)
ans[who] = 1;
else if(actual_x > me_x)
ans[who] = 2;
else if(actual_x < me_x)
ans[who] = 3;
else
{
assert(actual_x == me_x && actual_y == me_y);
ans[who] = 4;
}
}
}
}
return ans;
}