#include #include #include #include #define D 0 int i; int cnt=0; int daten[2000]; void tutuj(int * pos, int w) { int i; for (i = 0; i<6; i++) pos[i] = w; } int off(int * pos) { int i, r = 0, f = 1; for (i=0; i<6; i++) { r += f*pos[i]; f *= 3; } return r; } void set(int * pos, int wert) { int p = off(pos); daten[p] = wert; } int get(int * pos) { return daten[off(pos)]; } void block(int * pos, int www) { int pp[6]; if (D) cout<< "pos = " << pos[0] << pos[1] << pos[2] << pos[3] << pos[4] << pos[5]<<"\n"; for (pp[0] = (pos[0]==-1 ? 0 : pos[0]); pp[0] <= (pos[0]==-1 ? 2 : pos[0]); (pp[0])++) for (pp[1] = (pos[1]==-1 ? 0 : pos[1]); pp[1] <= (pos[1]==-1 ? 2 : pos[1]); (pp[1])++) for (pp[2] = (pos[2]==-1 ? 0 : pos[2]); pp[2] <= (pos[2]==-1 ? 2 : pos[2]); (pp[2])++) for (pp[3] = (pos[3]==-1 ? 0 : pos[3]); pp[3] <= (pos[3]==-1 ? 2 : pos[3]); (pp[3])++) for (pp[4] = (pos[4]==-1 ? 0 : pos[4]); pp[4] <= (pos[4]==-1 ? 2 : pos[4]); (pp[4])++) for (pp[5] = (pos[5]==-1 ? 0 : pos[5]); pp[5] <= (pos[5]==-1 ? 1 : pos[5]); (pp[5])++) {if (D&&0) cout << pos[0] << pos[1] << pos[2] << pos[3] << pos[4] << pos[5]<<"\n"; set(pp, 0); if (D) if (pp[0] == 0 && pp[1] == 2) cout << "***" << www << "\n"; } } int tstblock(int * pos) { int pp[6]; for (pp[0] = (pos[0]==-1 ? 0 : pos[0]); pp[0] <= (pos[0]==-1 ? 2 : pos[0]); pp[0]++) for (pp[1] = (pos[1]==-1 ? 0 : pos[1]); pp[1] <= (pos[1]==-1 ? 2 : pos[1]); pp[1]++) for (pp[2] = (pos[2]==-1 ? 0 : pos[2]); pp[2] <= (pos[2]==-1 ? 2 : pos[2]); pp[2]++) for (pp[3] = (pos[3]==-1 ? 0 : pos[3]); pp[3] <= (pos[3]==-1 ? 2 : pos[3]); pp[3]++) for (pp[4] = (pos[4]==-1 ? 0 : pos[4]); pp[4] <= (pos[4]==-1 ? 2 : pos[4]); pp[4]++) for (pp[5] = (pos[5]==-1 ? 0 : pos[5]); pp[5] <= (pos[5]==-1 ? 1 : pos[5]); pp[5]++) if (get(pp)) return 1; return 0; } int z; char wer, bez[9], aus[22]; int weri, bezi, ausi; int neg; int k[6]; int main() { FILE *in = fopen("island.in","r"); while (1) { fscanf(in, "%d\n", &z); if (!z) exit(6*9==42); for (i=0; i<2000; i++) daten[i]=1; for (i=0; i