fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using int64 = long long;
  4. const long long INF = (long long)4e18;
  5.  
  6. int main() {
  7. ios::sync_with_stdio(false);
  8. cin.tie(nullptr);
  9.  
  10. if (FILE *f = fopen("dimghinh.inp","r")) {
  11. fclose(f);
  12. freopen("dimghinh.inp","r",stdin);
  13. freopen("dimghinh.out","w",stdout);
  14. }
  15.  
  16. int n;
  17. if(!(cin >> n)) return 0;
  18.  
  19. long long UL = -INF, UR = INF; // u in (UL, UR)
  20. long long VL = -INF, VR = INF; // v in (VL, VR)
  21.  
  22. for (int i = 0; i < n; ++i) {
  23. long long xA,yA,xB,yB,xC,yC,xD,yD;
  24. cin >> xA>>yA >> xB>>yB >> xC>>yC >> xD>>yD;
  25.  
  26. long long uA = xA + yA, vA = xA - yA;
  27. long long uB = xB + yB, vB = xB - yB;
  28. long long uC = xC + yC, vC = xC - yC;
  29. long long uD = xD + yD, vD = xD - yD;
  30.  
  31. long long umin = min( min(uA,uB), min(uC,uD) );
  32. long long umax = max( max(uA,uB), max(uC,uD) );
  33. long long vmin = min( min(vA,vB), min(vC,vD) );
  34. long long vmax = max( max(vA,vB), max(vC,vD) );
  35.  
  36. UL = max(UL, umin);
  37. UR = min(UR, umax);
  38. VL = max(VL, vmin);
  39. VR = min(VR, vmax);
  40. }
  41.  
  42. // không tính biên
  43. if (UR - UL <= 1 || VR - VL <= 1) {
  44. cout << 0 << '\n';
  45. return 0;
  46. }
  47.  
  48. long long Mu = UR - UL - 1; // số u nguyên bên trong
  49. long long Mv = VR - VL - 1; // số v nguyên bên trong
  50.  
  51. auto count_even = [](long long L, long long R) -> long long {
  52. if (L > R) return 0;
  53. long long len = R - L + 1;
  54. bool L_even = ((L & 1) == 0);
  55. return (len + (L_even ? 1 : 0)) / 2;
  56. };
  57.  
  58. long long uL = UL + 1, uR = UR - 1;
  59. long long vL = VL + 1, vR = VR - 1;
  60.  
  61. long long eu = count_even(uL, uR);
  62. long long ev = count_even(vL, vR);
  63. long long ou = (uR >= uL ? (uR - uL + 1) : 0) - eu;
  64. long long ov = (vR >= vL ? (vR - vL + 1) : 0) - ev;
  65.  
  66. long long ans = eu * ev + ou * ov; // cùng parity
  67. cout << ans << '\n';
  68. return 0;
  69. }
  70.  
Success #stdin #stdout 0.01s 5288KB
stdin
3
3 0 0 3 4 7 7 4
5 0 7 2 2 7 0 5
5 7 7 5 3 1 1 3
stdout
4