#include //#include //#include //#include using namespace std; bool riadky[20005]; bool stlpce[20005]; bool hd[40010]; bool vd[40010]; //set< pair > body; //vector veze_x; //vector veze_y; int main(){ int x,y,n; int a,b; // suradnice veze long long count; scanf("%d %d %d", &x, &y, &n); while ( ! (x==0 && y==0 && n==0) ) { for (int i = 1; i <= x; ++i) riadky[i] = true; for (int i = 1; i <= y; ++i) stlpce[i] = true; for (int i = 1-y; i <= x-1; ++i) hd[i + 20005] = true; for (int i = 2; i <= x+y; ++i) vd[i] = true; //body.clear(); //veze_x.clear(); //veze_y.clear(); //cx = 0; //cy = 0; for(; n > 0; --n){ scanf("%d %d", &a, &b); //veze_x.push_back(a); //veze_y.push_back(b); //if (riadky[a]){ riadky[a] = false; //++cx; //} //if (stlpce[b]){ stlpce[b] = false; //++cy; //} hd[a-b + 20005] = false; vd[a+b] = false; //printf("%d %d %d %d\n", a, b, a-b, a+b); } /*for (vector::iterator vx = veze_x.begin(), vy = veze_y.begin(); vx != veze_x.end(); ++vx, ++vy){ int min, max, a = *vx, b = *vy; pair bod; min = (a >= b)?b:a; max = (a >= b)?a:b; int k=0; while (a-k > 0 && b-k > 0) { if (riadky[a-k] && stlpce[b-k] && body.count(make_pair(a-k, b-k)) == 0) body.insert(make_pair(a-k, b-k)); ++k; } k = 0; while (a+k <= x && b+k <= y) { if (riadky[a+k] && stlpce[b+k] && body.count(make_pair(a+k, b+k)) == 0) body.insert(make_pair(a+k, b+k)); ++k; } k=0; while (a+k <= x && b-k > 0) { if (riadky[a+k] && stlpce[b-k] && body.count(make_pair(a+k, b-k)) == 0) body.insert(make_pair(a+k, b-k)); ++k; } k=0; while (a-k > 0 && b+k <= y) { if (riadky[a-k] && stlpce[b+k] && body.count(make_pair(a-k, b+k)) == 0) body.insert(make_pair(a-k, b+k)); ++k; } }*/ count = 0; for (a = 1; a <= x; ++a){ for (b = 1; b <= y; ++b){ //printf("%d %d: %d %d %d %d\n", a, b, riadky[a], stlpce[b], hd[a-b + 20005], vd[a+b]); if (riadky[a] && stlpce[b] && hd[a-b + 20005] && vd[a+b]) ++count; } } //count = cy*x + cx*y - cy*cx; printf("%lld\n", count); scanf("%d %d %d", &x, &y, &n); } return 0; }