社区讨论
省选T1求助
灌水区参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo2twxck
- 此快照首次捕获于
- 2023/10/23 19:43 2 年前
- 此快照最后确认于
- 2023/10/23 19:43 2 年前
求 Hack,只有90分,#4 WA
CPP#include<bits/stdc++.h>
using namespace std;
void kread(int &x){
x=0;
int f=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x*=10;x+=c-'0',c=getchar();}
x*=f;
}
const int maxn=1e6;
struct edge{
int l,r;
bool operator < (const edge &A)const{
return l<A.l;
}
}b[maxn];
bool com(edge A,edge B){
return A.l<B.l;
}
void xA(int n,int m){
bool a[maxn];
memset(a,false,sizeof(a));
int l1;
l1=1;
for(int i=1;i<=m;i++){
kread(b[i].l),kread(b[i].r);
}
sort(b+1,b+m+1,com);
for(int i=1;i<=m;i++){
if(b[i].l<=l1){
a[b[i].r]=true;
l1=max(l1,b[i].r);
}
}
for(int i=2;i<=n;i++){
if(a[i]){
cout<<i<<' ';
}
}
return;
}
void xBl(int n,int m,int x){
bool a[maxn];
memset(a,false,sizeof(a));
int l1,f=x;
for(int i=1;i<=m;i++){
if(b[i].l<=x&&b[i].r>=x){
f=i;
}
}
l1=b[f].r;
for(int i=f;i<=m;i++){
if(b[i].l<=l1){
a[b[i].r]=true;
l1=max(l1,b[i].r);
}
}
l1=b[f].l;
for(int i=f;i>=1;i--){
if(b[i].r>=l1){
a[b[i].l]=true;
l1=min(l1,b[i].l);
}
}
for(int i=1;i<x;i++){
if(a[i]){
cout<<i<<' ';
}
}
}
void xBr(int n,int m,int x){
bool a[maxn];
memset(a,false,sizeof(a));
int l1,f=x;
for(int i=1;i<=m;i++){
if(b[i].l<=x&&b[i].r>=x){
f=i;
break;
}
}
l1=b[f].r;
for(int i=f;i<=m;i++){
if(b[i].l<=l1){
a[b[i].r]=true;
l1=max(l1,b[i].r);
}
}
l1=b[f].l;
for(int i=f;i>=1;i--){
if(b[i].r>=l1){
a[b[i].l]=true;
l1=min(l1,b[i].l);
}
}
for(int i=x+1;i<=n;i++){
if(a[i]){
cout<<i<<' ';
}
}
}
void xB(int n,int m,int x){
for(int i=1;i<=m;i++){
kread(b[i].l),kread(b[i].r);
}
sort(b+1,b+m+1,com);
xBl(n,m,x);
xBr(n,m,x);
return;
}
int main(){
//freopen("station.in","r",stdin);
//freopen("station.out","w",stdout);
int n,m,x;
kread(n),kread(m),kread(x);
if(x==1){
xA(n,m);
return 0;
}
else{
xB(n,m,x);
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...