问题标题: 酷町堂:4217 合并区间

0
0
已解决
贾一凡
贾一凡
中级光能
中级光能

题目链接: 酷町堂:4217

题目描述 Deion
给出一个区间的集合,请合并所有重叠的区间。

输入描述 Input Deion
第一行,一个整数n
接下来n行, 每行两个整数,x y,表示一个区间(x, y)

输出描述 Output Deion
合并之后的所有区间,每行一个。按左端点从小到大排序

样例输入 Sample Input
4
1 3
2 6
8 10
15 18
样例输出 Sample Output
1 6
8 10
15 18
数据范围及提示 Data Size & Hint
10≤n≤1000,对于每行输入的x、y,0<x<=y<2000

WA70:

#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
    int x;
    int y;
}a[1005];
bool cmp(stu x,stu y){
    if(x.x!=y.x)return x.x<y.x;
    return x.y<y.y;
}
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].x>>a[i].y;
    }
    sort(a+1,a+n+1,cmp);
    int start=a[1].x;
    int end=a[1].y;
    for(int i=2;i<=n;i++){
        if(a[i].x<end){
            if(a[i].y>end){
                end=a[i].y;
            }
        }else{
            cout<<start<<" "<<end<<endl;
            start=a[i].x;
            end=a[i].y;
        }
    }
    cout<<start<<" "<<end;
    return 0;
}


0
已采纳
陈俊霖
陈俊霖
资深光能
资深光能

把if(a[i].x<end)改成if(a[i].x<=end)

我要回答