#include<iostream>
/* 202303-1*/
using namespace std;
int main(){
int n,a,b,result;
cin >> n >> a >> b;
int *x1 = new int[n];
int *y1 = new int[n];
int *x2 = new int[n];
int *y2 = new int[n];
for(int i = 0; i < n; i++){
cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
}
for(int i = 0; i < n; i++){
int x_len = min(a,x2[i]) - max(0,x1[i]);
int y_len = min(b,y2[i]) - max(0,y1[i]);
if(x_len >= 0 && y_len >= 0){
result += x_len * y_len;
}
}
cout << result << endl;
delete x1;
delete x2;
delete y1;
delete y2;
return 0;
}
这道题考虑的太复杂了,应该反思。实际上这个题目,只要通过坐标与边界比较就可以得到重叠长度,反思反思,考虑的太多了,同时还应该考虑算出来的边长必须大于0,很容易忽略,注意!注意!注意!学到了。