#include #include struct Obdelnik { int x1; int y1; int x2; int y2; }; void set_obdelnik(Obdelnik *o, int x1, int y1, int x2, int y2) { o->x1 = x1; o->x2 = x2; o->y1 = y1; o->y2 = y2; } int min(int a, int b) { return (a0) { o = zasob[--pocet]; Obdelnik novy; // binární hledání int l = o.x1; int p = o.x2; int i = 0, j = 0; while(l<=p) { i = (l+p)/2; j = min(i-o.x1 + o.y1, o.y2); // přepočítání ypsilonové souřadnice // pokud splňuje podmínku, vyhráli jsme if (i+j+2==matice[j][i]) { printf("%d. radek, %d. sloupec = %d\n", j+1, i+1, matice[j][i]); return 0; } else if (i+j+2=o.x1) { set_obdelnik(&novy, o.x1, j, i-1, o.y2); zasob[pocet++] = novy; } if (j-1>=o.y1) { set_obdelnik(&novy, i, o.y1, o.x2, j-1); zasob[pocet++] = novy; } } else { if (i+1<=o.x2) { set_obdelnik(&novy, i+1, o.y1, o.x2, j); zasob[pocet++] = novy; } if (j+1<=o.y2) { set_obdelnik(&novy, o.x1, j+1, i, o.y2); zasob[pocet++] = novy; } } } // vime, ze tam nic neni, takze jsme take vyhrali :-P printf("Zadne takove policko neni.\n"); return 0; }