AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

区间合并这样写行不行?



0


题目链接:https://www.acwing.com/problem/content/805/
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
struct node{
    int l;
    int r;
}q[N],a[N];
bool cmp(node a,node b){
    return a.l<b.l;
}
int main(){
    int n,i,ans=1;
    cin>>n;
    for(i=0;i<n;i++){
        cin>>q[i].l;
        cin>>q[i].r;
    }
    sort(q,q+n,cmp);
    int right=q[0].r,left=q[0].l;
    for(i=1;i<n;i++){
        if(q[i].l>right){
            a[ans].l=left;
            a[ans].r=right;
            ans++;
            left=q[i].l;
            right=q[i].r;
        }
        else{
            right=max(right,q[i].r);
        }
    }
    a[ans].l=left;
    a[ans].r=right;
    cout<<ans<<endl;//合并后区间个数
    //输出合并后的区间
    for(i=1;i<=ans;i++){
        cout<<"["<<a[i].l<<","<<a[i].r<<"]"<<endl;
    }
}


提问于12天前
凌乱之风
241


0 个问答


我来回答
你确定删除吗?

© 2018-2020 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息