#include #include #include //#include using namespace std; bool riadky[20005]; bool stlpce[20005]; set< pair > body; vector veze_x; vector veze_y; int main(){ int x,y,n; int a,b, cx, cy; // 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; 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; } } 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 = cy*x + cx*y - cy*cx; printf("%lld\n", x*y - count - body.size()); scanf("%d %d %d", &x, &y, &n); } return 0; }