#include #include #include using namespace std; inline int iabs(int x) { return x > 0 ? x : -x; } inline int min(int x, int y) { return x < y ? x : y; } struct Pair { Pair(int x, int y) { first = x; second = y; } int first; int second; }; int main() { int x = 42; int lastx = 20000; int y = 42; int lasty = 20000; int n = 42; bool rows[20000]; bool cols[20000]; bool diag1[40000]; bool diag2[40000]; char* a = new char[20000*20000]; scanf("%d %d %d",&x,&y,&n); while(x || y || n) { if(lastx > 5000) { //printf("memset\n"); memset( a, 0, 20000*20000); }else{ for(int i = 0; i < lastx; i++) { //printf("else\n"); memset(a + i*20000, 0, lasty); } } //printf("mem ok\n"); int free = 0; if(n > 0) { memset( &rows, 0, 20000); memset( &cols, 0, 20000); memset( &diag1, 0, 40000); memset( &diag2, 0, 40000); //printf("ready\n"); int kx; int ky; for(int i = 0; i < n; i++) { scanf("%d %d",&kx, &ky); kx -= 1; ky -= 1; // queen at a[kx*20000 + ky]; //printf("input\n"); char* ptr = a + kx*20000; if(!(rows[kx])) { memset(ptr, 1, y); } //printf("checkpoint0\n"); ptr = a + ky; if(!(cols[ky])) { //printf("if ok\n"); for(int i = 0; i < x; i++) { *ptr = 1; ptr += 20000; } } //printf("checkpoint1\n"); if(!(diag1[kx - ky + 19999])) { ptr = a + kx*20000 + ky; for(int i = 0; i <= min(ky,kx); i++){ *ptr = 1; ptr -= 20000 + 1; } //printf("checkpoint1a\n"); ptr = a + kx*20000 + ky; for(int i = 0; i < min(y-ky, x - kx) ;i++){ *ptr = 1; ptr += 20000 + 1; } } //printf("checkpoint2\n"); if(!(diag2[kx+ky])) { ptr = a + kx*20000 + ky; for(int i = 0; i < min(kx + 1, y - ky) ;i++) { *ptr = 1; ptr -= 20000 - 1; } ptr = a + kx*20000 + ky; for(int i = 0; i < min(ky + 1, x - kx);i++){ *ptr = 1; ptr += 20000 - 1; } } rows[kx] = true; cols[ky] = true; diag1[ kx - ky + 19999 ] = true; diag2[ kx + ky ] = true; } //printf("checkpoint3\n"); for(int i = 0; i < x; i++) { for(int j = 0; j < y; j++) { if(!(a[i*20000+j])) { free++; /*printf(" "); }else { //printf("X");*/ } } //printf("\n"); } }else { free = x*y; } printf("%d\n",free); lastx = x; lasty = y; scanf("%d %d %d",&x,&y,&n); } return 0; }