记录编号 583085 评测结果 AAAAAAAAAA
题目名称 [省选 2023]火车站 最终得分 100
用户昵称 Gravatar宇战 是否通过 通过
代码语言 C++ 运行时间 0.549 s
提交时间 2023-10-04 11:28:50 内存使用 12.40 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,ss,s[1000000],tot;
int tot1,tot2;
struct node{
    int x,y;
}a[1000000],b[1000000];
bool cmp1(node x,node y){
    return x.x<y.x;
}
bool cmp2(node x,node y){
    return x.y>y.y;
}
int main(){
    freopen("station.in","r",stdin);
    freopen("station.out","w",stdout);
      cin>>n>>m>>ss;
      for(int i=1;i<=m;i++){
          int xx,yy;
          cin>>xx>>yy;
          if(yy>=ss){
              a[++tot1].x=xx;
              a[tot1].y=yy;
          }
          if(xx<=ss){
              b[++tot2].x=xx;
              b[tot2].y=yy;
          }
      }
      sort(a+1,a+1+tot1,cmp1);
      int l=a[1].x,r=a[1].y;
      if(r!=ss){
          s[++tot]=r;
      }
      for(int i=2;i<=tot1;i++){
          if(a[i].x<=r&&a[i].x>=l){
              s[++tot]=a[i].y;
              if(a[i].y>r){
                  r=a[i].y;
              }
          }else{
              break;
          }
      }
      sort(b+1,b+1+tot2,cmp2);
      l=b[1].x;
      r=b[1].y;
      if(l!=ss){
          s[++tot]=l;
      }
      for(int i=2;i<=tot2;i++){
          if(b[i].y<=r&&b[i].y>=l){
              s[++tot]=b[i].x;
              if(b[i].x<l){
                  l=b[i].x;
              }
          }else{
              break;
          }
      }
      sort(s+1,s+1+tot);
      for(int i=1;i<=tot;i++){
          if(s[i]!=s[i-1]&&s[i]!=ss){
              cout<<s[i]<<' ';
          }
      }
}