| 比赛 |
省选 2023 Day1 复现 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
火车站 |
最终得分 |
100 |
| 用户昵称 |
终焉折枝 |
运行时间 |
0.515 s |
| 代码语言 |
C++ |
内存使用 |
4.50 MiB |
| 提交时间 |
2026-03-02 10:30:45 |
显示代码纯文本
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int MAXN = 2 * 1e5 + 5;
struct sta{
int l, r;
}s[MAXN];
int n, m, x, t1 = 0, t2 = 0;
bool vis[MAXN];
vector<int> ans;
bool cmp(sta x, sta y){
return x.l < y.l;
}
bool cmp2(sta x, sta y){
return x.r > y.r;
}
int main(){
freopen("station.in", "r", stdin);
freopen("station.out", "w", stdout);
cin.tie(0) -> ios::sync_with_stdio(0);
cin >> n >> m >> x;
for(int i = 1;i <= m;i ++){
cin >> s[i].l >> s[i].r;
}
sort(s + 1, s + m + 1, cmp);
bool flag = 0;
int maxr = x;
for(int i = 1;i <= m;i ++){
if(s[i].l <= x && x <= s[i].r){
maxr = max(maxr, s[i].r);
}
}
for(int i = 1;i <= m;i ++){
int l = s[i].l, r = s[i].r;
if(l <= maxr && r >= x){
if(vis[r]) continue;
ans.push_back(r);
vis[r] = 1;
maxr = max(maxr, r);
}
}
sort(s + 1, s + m + 1, cmp2);
int maxl = x;
for(int i = 1;i <= m;i ++){
if(s[i].l <= x && x <= s[i].r){
maxl = min(maxl, s[i].l);
}
}
for(int i = 1;i <= m;i ++){
int l = s[i].l, r = s[i].r;
if(r >= maxl && l <= x){
// cout << l << ' ' << r << '\n';
if(vis[l]) continue;
ans.push_back(l);
vis[l] = 1;
maxl = min(maxl, l);
}
}
sort(ans.begin(), ans.end());
int lst = -1;
for(int q : ans){
if(q == x || x == lst) continue;
cout << q << ' ';
lst = q;
}
return 0;
}