#ifndef INCLUDED_MAIN #define INCLUDED_MAIN #include __FILE__ using namespace nskr; struct sg{ vector v; int w; sg(int n, int x){ w=1; while(w>1); while(true){ v[p] = v[p*2] + v[p*2+1]; p>>=1; if(p==0) break; } } int prod(int l, int r){ if(l!=0){ return prod(0,r) - prod(0,l); } int ret = 0; int i=1,j=w,k=0; while(true){ while(k+(i<<1) < r) { i<<=1; j>>=1; } ret += v[j]; k += i; if(k==r) break; i=1; j=w+k; } return ret; } }; int main(void){ ll h, w; cin >> h >> w; ll n; cin >> n; vector s(h,sg(w,1)); for(;n--;){ int a,b,c,d; cin >> a >> b >> c >> d; a--;b--;c--;d--; for(int i=a; i<=c; i++){ if(s[i].prod(b,d+1) == 0) continue; for(int j=b; j<=d; j++){ s[i].set(j,0); } } } int i, ans = 0; rep(i,h){ ans += s[i].v[1]; } cout << ans << "\n"; } #else #include using namespace std; using ll = long long; using ld= long double; #define rep(i,n) for(i=0;i<(n);i++) #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() namespace nskr{} int randint(int a, int b){ static mt19937 gen(chrono::steady_clock::now().time_since_epoch().count()); uniform_int_distribution dist(a,b); return dist(gen); } #endif