贪心G了求助
查看原帖
贪心G了求助
593495
Cssen楼主2022/11/16 21:43

与第二篇题解类似,排序后尽量覆盖

#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=50005;
struct node{
    int l,r;
}line[maxn];
bool cmp(node a,node b){
    if(a.l==b.l) return a.r<b.r;
    return a.l<b.l;
}
int n,L,R;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&line[i].l,&line[i].r);
    line[++n].l=line[n].r=1000001;
    sort(line+1,line+n+1,cmp);
    for(int i=1;i<=n;i++){
        if(line[i].l<=R) R=max(R,line[i].r);
        else
        {
            if(i!=1) printf("%d %d\n",L,R);
            L=line[i].l;
            R=line[i].r;    
        }
    }
    return 0;
}
2022/11/16 21:43
加载中...