线段覆盖 java,南邮 OJ 1407 线段覆盖
线段覆盖
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 219 测试通过 : 60
比赛描述
给出数轴上N条线段,每条线段用两个数表示A,B(-10^9<=A
现在请你求出它们覆盖数轴上的多长距离。
输入
第一行:N
以后N行,每行给出一条线段,即两个用空格隔开的整数:Ai和Bi
输出
一个数,表示覆盖长度
样例输入
3 2 8 -1 1 5 10
样例输出
10
提示
题目来源
JSOI2010
#include
#include
using namespace std;
struct point{
int x;
bool isLeft;
};
bool operator
return p1.x
}
int main(){
int N,i,count=0,begin,sum=0;
bool findBegin = 0;
point *points;
cin>>N;
N *= 2;
points = new point[N];
for(i=0;i
cin>>points[i].x;
points[i].isLeft = 1;
++i;
cin>>points[i].x;
points[i].isLeft = 0;
}
sort(points,points+N);
for(i=0;i
if(!findBegin){
findBegin = 1;
begin = points[i].x;
}
if(points[i].isLeft){
++count;
}else{
--count;
}
if(0==count){
sum += points[i].x-begin;
findBegin = 0;
}
}
cout<
}