Стена кода
void algorithmArimuriArihaviKasaiLiParka(vector &s) {
procedure swap(Var a, b : longint);
begin
a := a xor b;
b := a xor b;
a := a xor b;
end;
void print(vector < int > &tree)
{
printf(" %d \n", tree[1]);
printf(" %d %d \n", tree[2], tree[3]);
printf(" %d %d %d %d \n", tree[4], tree[5], tree[6], tree[7]);
}
void func(int qwer)
const long long INF = 9223372036854775807;
nn = 1LL << (int)(log(k) / log(2) + 0.99999);
void Super_Puper_Mega_Merge(int v, int u){
vector> matrix5 = {
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1},
{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1},
{0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0},
{0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1},
{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
};
|
Код от Коли
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int next_side[6][4] = {
{3, 4, 1, 2},
{0, 4, 5, 2},
{3, 0, 1, 5},
{5, 4, 0, 2},
{3, 5, 1, 0},
{1, 4, 3, 2}};
int add_rot[6][6] = {
{0, 0, 0, 0, 0, 0},
{0, 0, -1, 0, 1, 0},
{0, 1, 0, -1, 0, -2},
{0, 0, 1, 0, -1, 0},
{0, -1, 0, 1, 0, 2},
{0, 0, 2, 0, -2, 0}};
bool cmp(tuple t1, tuple t2) {
if (get<0>(t1) != get<0>(t2)) {
return get<0>(t1) < get<0>(t2);
}
if (get<2>(t1) != get<2>(t2)) {
return get<2>(t1) < get<2>(t2);
}
if (get<1>(t1) != get<1>(t2)) {
return get<1>(t1) < get<1>(t2);
}
assert(false);
}
splitZero(root, root, VERYVERYVERYTEMP); // На самом деле, это код не мой, а моего сокомандника.
arrx.puba(x1);
arrx.puba(x2);
arry.puba(y1);
arry.puba(y2);
arrz.puba(z1);
arrz.puba(z2);
points[x1].puba({y1, z1});
points[x1].puba({y1, z2});
points[x1].puba({y2, z1});
points[x1].puba({y2, z2});
points[x2].puba({y1, z1});
points[x2].puba({y1, z2});
points[x2].puba({y2, z1});
points[x2].puba({y2, z2});
rects[x1].puba({{y1, z1}, {y2, z2}});
vector <tuple<plane, point3d, point3d, point3d>> gen_planes() {
point3d q = a + b - a + c - a + d - a;
point3d x = a + b - a + c - a;
point3d y = a + b - a + d - a;
point3d z = a + c - a + d - a;
vector <tuple<plane, point3d, point3d, point3d>> pl = {make_tuple(plane(a, b, c), a, b - a, c - a),
make_tuple(plane(a, b, d), a, b - a, d - a),
make_tuple(plane(a, c, d), a, c - a, d - a),
make_tuple(plane(q, x, y), q, x - q, y - q),
make_tuple(plane(q, x, z), q, x - q, z - q),
make_tuple(plane(q, y, z), q, y - q, z - q)};
return pl;
}
|