#include #include /*int x, y, max; int * pole;*/ /*int map(int posX, int posY) { printf("%d %d %d", posX, posY, (posX + x * posY)); return (posX + (x * posY)); } void readQueen(int posX, int posY) { int i; posX -=1; posY -=1; // printf("\n\n%d %d\n\n", posX, posY); for ( i = 0; i < x; ++i ){ pole[map(i,posY)] = 0; } for ( i = 0; i < y; ++i ){ pole[map(posX,i)] = 0; } for ( i = map(i,posY); i < max; i+= x + 1 ){ pole[i] = 0; } for ( i = map(i,posY); i >= 0; i-= x - 1 ){ pole[i] = 0; } for ( i = map(i,posY); i < max; i+= x - 1 ){ pole[i] = 0; } for ( i = map(i,posY); i >= 0; i-= y + 1 ){ pole[i] = 0; } } int main() { int pocet, i, posX, posY; scanf("%d %d %d", &x, &y, &pocet); while ( x || y || pocet ) { max = x * y; int * pole = (int*)malloc(sizeof(int)*(max)); for (i = 0; i < max; ++i) pole[i] = 1; for (i = 0; i < pocet; ++i) { scanf("%d %d", &posX, &posY); readQueen(posX, posY); } int suma = 0; for (i = 0; i < max; ++i) { suma+=pole[i]; } printf("%d\n", suma); free (pole); scanf("%d %d %d", &x, &y, &pocet); } return 0; }*/ int mapPos(int x, int y, int delka, int sirka) { return (y*delka+x); } int main() { int delka, sirka, pocet, i, j, posX, posY; scanf("%d %d %d", &delka, &sirka, &pocet); while ( delka || sirka || pocet ) { int * pole = (int*)malloc(sizeof(int)*(delka*sirka)); for (i = 0; i < (delka*sirka); ++i) pole[i] = 1; for (i = 0; i < pocet; ++i) { scanf("%d %d", &posX, &posY); posX-=1; posY-=1; for (j = posX; j < (delka*sirka); j+=delka) pole[j] = 0; for (j = mapPos(0, posY, delka, sirka); j < mapPos(delka, posY, delka, sirka); ++j) pole[j] = 0; for (j = mapPos(posX, posY, delka, sirka); j < (delka*sirka); j+=(delka+1)) if ((j/delka)>posX) pole[j] = 0; for (j = mapPos(posX, posY, delka, sirka); j < (delka*sirka); j+=(delka-1)) if ((j/delka)>posX) pole[j] = 0; for (j = mapPos(posX, posY, delka, sirka); j >= 0; j -= (delka-1) ) if ((j/delka)= 0; j -= (delka+1) ) if ((j/delka)