タイトル説明
オレンジは毎晩夢を見ますが、夢を見たくないのは、オレンジが夢を見るたびに長方形の影が生成され、すべての夢が1つを生成するからです。奇妙なことに、オレンジには毎晩2つの夢しかなく、オレンジは毎晩であることを知りたがっています。の影の大きさはどれくらいですか、オレンジが2つの長方形の面積の合計を計算するのを手伝ってくれませんか?(重複部分は1回のみカウントされます)
入る
各行に4つの整数x、y、x1、y1を含む2行を入力します。(x、y)は長方形の左下隅、(x1、y1)は長方形の右上隅です(0≤x、y、x1、y1≤1000)。
出力
2つの長方形の面積の合計を表す整数を出力します。(重複部分は1回のみカウントされます)
サンプル入力
0 1 2 3
1 0 3 2
サンプル出力
7
コードの内容
#include <iostream>
#include<cmath>
using namespace std;
int max2(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int min2(int a,int b)
{
if(a>b)
return b;
return a;
}
int main()
{
int i,x[4],y[4],s1,s2,s3,area;
int x1,x2,y1,y2;
for(i=0;i<4;i++)
cin>>x[i]>>y[i];
s1=(x[1]-x[0])*(y[1]-y[0]);
s2=(x[3]-x[2])*(y[3]-y[2]);
if((x[2]>=x[1])||(x[0]>=x[3])||(y[0]>=y[3])||(y[1]<=y[2]))
area=s1+s2;
else
{
x1=max2(min2(x[0],x[1]),min2(x[2],x[3]));
x2=min2(max2(x[0],x[1]),max2(x[2],x[3]));
y1=max2(min2(y[0],y[1]),min2(y[2],y[3]));
y2=min2(max2(y[0],y[1]),max2(y[2],y[3]));
s3=abs((x1-x2)*(y1-y2));
area=s1+s2-s3;
}
cout<<area<<endl;
return 0;
}