#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){ int k = 1; ll ret = 0; int i = w+l; while(l+k <= r){ if(l&k){ ret += v[i]; i++; i>>=1; l+=k; }else{ i>>=1; } k<<=1; } while(r-l > 0){ if(l+k <= r){ ret += v[i]; i++; i<<=1; l+=k; }else{ i<<=1; } k>>=1; } 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++){ int u = s[i].prod(b,d+1); if(u == 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