#include #include #include int maxX, maxY, max; int * pole; inline int map(int x, int y) { // printf("mapuju %d %d na %d\n", x, y,x + y * maxX ); return (x +( y * maxX )); } /** radek 1 sloupec 2 zhora dolu 4 zdola nahoru 8 */ void readQueen() { int posX, posY, i; scanf("%d %d", &posX, &posY); posX -=1; posY -=1; int stav = pole[map(posX,posY)]; // printf("stav %d\n", stav); if (! (stav & 1)) { for ( i = 0; i < maxX; ++i ){ pole[map(i,posY)] += 1; }} if (!(stav & 2)) { for ( i = 0; i < maxY; ++i ){ pole[map(posX,i)] += 2; }} if (!(stav & 4)) { for ( i = 0; (i+posX)=0 && (posY-i)>=0; ++i ){ pole[map(posX - i,posY - i)] += 4; } } if (!(stav & 8)) { for ( i = 0; (posX-i)>=0 && (i+posY)=0; ++i ){ pole[map(posX + i,posY - i)] += 8; } } } int main() { int pocet, i; scanf("%d %d %d", &maxX, &maxY, &pocet); while ( maxX || maxY || pocet ) { max = maxX * maxY; pole = (int*)malloc(sizeof(int)*(max)); for ( i = 0; iposX) pole[j] = 0; else break;} for (j = mapPos(posX, posY, delka, sirka); j < (delka*sirka); j+=(delka-1)) {if ((j/delka)= 0; j -= (delka-1) ) {if ((j/delka)>posX) pole[j] = 0; else break;} for (j = mapPos(posX, posY, delka, sirka); j >= 0; j -= (delka+1) ) {if ((j/delka)