ABC的D题
  • 板块学术版
  • 楼主Cardinal_Oath
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/6/18 21:53
  • 上次更新2023/10/27 23:02:33
查看原帖
ABC的D题
560459
Cardinal_Oath楼主2022/6/18 21:53

先打了一个解法发现是错的,后来改成线段树区间覆盖过了,不过我还是想知道我原解法为啥错了,求HACK

//D
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
struct Set{int l,r;}a[N];
int n;
bool cmp(Set x,Set y){
    if(x.l==y.l) return x.r<y.r;
    return x.l<y.l;
}
int main(){
    scanf("%d",&n);
    for(register int i=1;i<=n;i++) scanf("%d %d",&a[i].l,&a[i].r);
    a[n+1].l=1e9,a[n+1].r=1e9;
    n++;
    sort(a+1,a+n+1,cmp);
    int l=a[1].l,r=a[1].r;
    for(register int i=2;i<=n;i++){
        if(a[i].l>a[i-1].r){
            printf("%d %d\n",l,r);
            l=a[i].l,r=a[i].r;
        }else r=max(r,a[i].r);
        // printf("SEG %d %d\n",a[i].l,a[i].r);
    }
}
2022/6/18 21:53
加载中...