fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++)
  5. #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--)
  6.  
  7. using ll = long long;
  8.  
  9. template<typename X, typename Y>
  10. bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
  11. template<typename X, typename Y>
  12. bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
  13.  
  14. const int MAXN = 1e6 + 5;
  15.  
  16. int M, N, Q;
  17. int X[MAXN], Y[MAXN], U[MAXN], V[MAXN];
  18.  
  19. namespace Subtask1 {
  20. bool check() {
  21. return M == 1 && N <= 100 && Q <= 100;
  22. }
  23. void solve() {
  24. vector<int> A(N + 5, 0);
  25. FOR(i, 1, Q) {
  26. int l = Y[i], r = V[i];
  27. FOR(c, l, r) A[c] ^= 1;
  28. }
  29. int ans = 0;
  30. FOR(c, 1, N) ans += A[c];
  31. cout << ans << "\n";
  32. }
  33. }
  34. namespace Subtask2 {
  35. bool check() {
  36. return M == 1;
  37. }
  38. void solve() {
  39. vector<int> A(N + 5, 0);
  40. FOR(i, 1, Q) {
  41. int l = Y[i], r = V[i];
  42. A[l] ^= 1; A[r + 1] ^= 1;
  43. }
  44. int ans = 0;
  45. FOR(c, 1, N) {
  46. A[c] ^= A[c - 1];
  47. ans += A[c];
  48. }
  49. cout << ans << "\n";
  50. }
  51. }
  52.  
  53. namespace Fulltask {
  54. void solve() {
  55. vector<vector<int>> A(M + 5, vector<int>(N + 5, 0));
  56. FOR(i, 1, Q) {
  57. int x = X[i], y = Y[i], u = U[i], v = V[i];
  58. A[x][y] ^= 1; A[u + 1][v + 1] ^= 1;
  59. A[x][v + 1] ^= 1; A[u + 1][y] ^= 1;
  60. }
  61. int ans = 0;
  62. FOR(r, 1, M) FOR(c, 1, N) {
  63. A[r][c] ^= A[r - 1][c] ^ A[r][c - 1] ^ A[r - 1][c - 1];
  64. ans += A[r][c];
  65. }
  66. cout << ans << "\n";
  67. }
  68. }
  69.  
  70. void solve() {
  71. cin >> M >> N >> Q;
  72. FOR(i, 1, Q) cin >> X[i] >> Y[i] >> U[i] >> V[i];
  73. if (Subtask1::check()) Subtask1::solve();
  74. else if (Subtask2::check()) Subtask2::solve();
  75. else Fulltask::solve();
  76. }
  77.  
  78. int main() {
  79. ios_base::sync_with_stdio(false); cin.tie(NULL);
  80.  
  81. // freopen("LIGHT.INP", "r", stdin);
  82. // freopen("LIGHT.OUT", "w", stdout);
  83.  
  84. int tests = 1; // cin >> tests;
  85. while (tests--) solve();
  86.  
  87. #ifdef LOCAL
  88. cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
  89. #endif
  90. return 0;
  91. }
Success #stdin #stdout 0s 9736KB
stdin
2 2 2
1 1 2 2
2 2 2 2
stdout
3