记录编号 583006 评测结果 AAAAAAAAAA
题目名称 3878.[省选 2023]火车站 最终得分 100
用户昵称 ┭┮﹏┭┮ 是否通过 通过
代码语言 C++ 运行时间 0.497 s
提交时间 2023-10-03 11:36:07 内存使用 8.36 MiB
显示代码纯文本
#include <bits/stdc++.h> 
using namespace std;
const int N = 2e5+10;
int n,m,k;
struct made{
    int l,r;
}a[N];
int l = INT_MAX,r;
int ans[2*N],tot;
bool cmp(made x,made y){
    if(x.l == y.l)return x.r < y.r;
    return x.l < y.l;
}
int main(){
    freopen("station.in","r",stdin);
    freopen("station.out","w",stdout);
    scanf("%d%d%d",&n,&m,&k);
    l = r = k;
    for(int i = 1;i <= m;i++){
        scanf("%d%d",&a[i].l,&a[i].r);
        if(a[i].l <= k && a[i].r >= k){
            l = min(l,a[i].l),r = max(r,a[i].r);
            if(a[i].l < k)ans[++tot] = a[i].l;
            if(a[i].r > r)ans[++tot] = a[i].r;
        }
    }
    sort(a+1,a+1+m,cmp);
//    for(int i = 1;i <= m;i++)cout<<a[i].l<<' '<<a[i].r<<endl;
    int l1 = k,r1 = r;
    for(int i = 1;i <= m;i++){
        if(a[i].l <= r1 && a[i].r >= l1){
            r1 = max(r1,a[i].r);
            ans[++tot] = a[i].r;
        }
    }
    l1 = l,r1 = k;
    for(int i = 1;i <= m;i++){
        if(a[i].l <= r1 && a[i].r >= l1){
            l1 = min(l1,a[i].l);
            ans[++tot] = a[i].l;
        }
    }
    sort(ans+1,ans+1+tot);
    int m = unique(ans+1,ans+1+tot) - (ans+1);
    for(int i = 1;i <= m;i++){
        if(ans[i] != k)printf("%d ",ans[i]);
    }
    printf("\n");
    
    return 0;
    
}