fork download
  1. #include <stdio.h>
  2. #include <algorithm>
  3. using namespace std;
  4. #define MN 105
  5. struct data {
  6. int x1,y1,x2 ,y2,K;
  7. } p[MN];
  8. int n,X[2*MN],Y[2*MN],s[2][2],sol;
  9. int main(){
  10. scanf("%d",&n);
  11. for (int i = 0; i < n; i++) {
  12. scanf("%d%d%d%d%d",&p[i].x1,&p[i].y1,&p[i].x2,&p[i].y2,&p[i].K);
  13. X[i]=p[i].x1; X[n+i]=p[i].x2;
  14. Y[i]=p[i].y1; Y[n+i]=p[i].y2;
  15. }
  16. sort(X,X+n+n);
  17. sort(Y,Y+n+n);
  18. for (int i = 1; i < (n<<1); i++) {
  19. if (X[i] == X[i-1]) continue;
  20. for (int j = 1; j < (n<<1); j++) {
  21. if (Y[j] == Y[j-1]) continue;
  22. s[0][0]=((X[i]-X[i-1]+1)/2)*((Y[j]-Y[j-1]+1)/2);
  23. s[0][1]=((X[i]-X[i-1]+1)/2)*((Y[j]-Y[j-1])/2);
  24. s[1][0]=((X[i]-X[i-1])/2)*((Y[j]-Y[j-1]+1)/2);
  25. s[1][1]=((X[i]-X[i-1])/2)*((Y[j]-Y[j-1])/2);
  26. for (int k = 0; k < n; k++) {
  27. if (p[k].x1 <= X[i-1] && X[i] <= p[k].x2 && p[k].y1 <= Y[j-1] && Y[j] <= p[k].y2) {
  28. if (p[k].K == 1) sol+=s[0][0]+s[0][1]+s[1][0]+s[1][1],s[0][0]=s[0][1]=s[1][0]=s[1][1]=0;
  29. else if (p[k].K == 2) {
  30. if ((p[k].y1&1) != (Y[j-1]&1)) sol+=s[0][0]+s[1][0],s[0][0]=s[1][0]=0;
  31. else sol+=s[0][1]+s[1][1],s[0][1]=s[1][1]=0;
  32. } else if (p[k].K == 3) {
  33. if ((p[k].x1&1) != (X[i-1]&1)) sol+=s[0][0]+s[0][1],s[0][0]=s[0][1]=0;
  34. else sol+=s[1][0]+s[1][1],s[1][0]=s[1][1]=0;
  35. } else {
  36. if (((p[k].x1+p[k].y1)&1) != ((X[i-1]+Y[j-1])&1)) sol+=s[1][0]+s[0][1],s[1][0]=s[0][1]=0;
  37. else sol+=s[0][0]+s[1][1],s[0][0]=s[1][1]=0;
  38. }
  39. }
  40. }
  41. }
  42. }
  43. printf("%d",sol);
  44. return 0;
  45. }
Success #stdin #stdout 0s 3348KB
stdin
4
1 1 11 11 1
1 1 11 11 2
9 9 19 19 3
9 9 19 19 4
stdout
172