#include <bits/stdc++.h> using namespace std; typedef pair<int, int> PII; #define fi first #define se second const int N=105; int n, m, k; PII match[N][N]; bool g[N][N], vis[N][N]; // 日型跳跃方向 int dirs[8][2]={{-2, 1}, {-2, -1}, {-1, -2}, {-1, 2}, {1, -2}, {1, 2}, {2, -1}, {2, 1}}; bool find(int x, int y){ for(int i=0; i<8; ++i){ int nx=x+dirs[i][0]; int ny=y+dirs[i][1]; if(1<=nx && nx<=n && 1<=ny && ny<=m && !g[nx][ny] && !vis[nx][ny]){ vis[nx][ny]=true; PII t=match[nx][ny]; if(!t.fi || find(t.fi, t.se)){ match[nx][ny]={x, y}; return true; } } } return false; } int main(){ memset(g, 0x00, sizeof g); memset(match, 0x00, sizeof match); cin>>n>>m>>k; for(int i=0; i<k; ++i){ int a, b; cin>>a>>b; // 读入障碍点 g[a][b]=true; } int ans=0; for(int i=1; i<=n; ++i){ for(int j=1; j<=m; ++j){ if(g[i][j] || (i+j)&0x01) continue; // 从坐标和为偶数向奇数匹配 memset(vis, 0x00, sizeof vis); if(find(i, j)) ++ans; } } cout<<n*m-k-ans<<endl; return 0; }