题目描述
在二维平面上,横轴上随意摆放着若干数目大小不一的正方形,这些正方形底边均与横轴重合,正方形间可能有重叠。
输入
第一行为正方形总数目
第二行 每两个数为一组,即一个正方形的左右边缘坐标
输出
所有正方形围成的外轮廓与横轴所围的面积
样例输入
5
1 3 2 5 4 6 8 10 9 12
样例输出
24
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int x[2*n],a[n];
int s,s1=0,s2=0;
for(int i=0;i<2*n;i++)
cin>>x[i];
for(int i=0;i<n;i++)
{
a[i]=x[2*i+1]-x[2*i];
// cout<<a[i]<<endl;
}
for(int i=0;i<n-1;i++)
{
s1+=a[i]*a[i];
if(x[2*i+2]<x[2*i+1])
{
if(a[i]<a[i+1])
s2+=a[i]*(x[2*i+1]-x[2*i+2]);
else
s2+=a[i+1]*(x[2*i+1]-x[2*i+2]);
}
}
// cout<<s1<<s2<<endl;
s=s1-s2+a[n-1]*a[n-1];
cout<<s;
}
纯原创,如有不足,欢迎指正