點擊:題目鏈接
AC代碼:
#include<iostream>
#include<map>
using namespace std;
struct node{
int x, y;
int x1, y1;
};
bool isR(node a, node b){
if(max(a.x, b.x) < min(a.x1, b.x1) && max(a.y, b.y) < min(a.y1, b.y1))
return true;
return false;
}
int main(){
node ret[2];
int ans = 0;
for(int i = 0; i < 2;i ++){
cin >> ret[i].x >> ret[i].y >> ret[i].x1 >> ret[i].y1;
int lenx = ret[i].x1 - ret[i].x;
int leny = ret[i].y1 - ret[i].y;
ans += lenx * leny;
}
if(isR(ret[0], ret[1])){
int a = (ret[0].x1 < ret[1].x1 ? ret[0].x1 : ret[1].x1);
int b = (ret[0].x > ret[1].x ? ret[0].x : ret[1].x);
int len = a - b;
int high = (ret[0].y1 < ret[1].y1 ? ret[0].y1 : ret[1].y1) - (ret[0].y > ret[1].y?ret[0].y : ret[1].y);
cout << ans - (len * high) << endl;
}else{
cout << ans << endl;
}
return 0;
}