https://www.51goc.com/level/program/110/640 题目如下:
题目描述 在一条数轴上,有N条线段,第i条线段的左端点是s[i],右端点是e[i]。如果线段有重叠(即使是端点重叠也算是重叠),则输出“impossible”, 如果没有重叠则输出“possible”。
输入格式
输入文件名:640.in
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1 <= G <= 10。
每组测试数据格式如下:
第一行,一个整数N。 1 <= N <= 10。
接下来有N行,每行两个整数:s[i],e[i]。 0<=s[i],e[i]<=1000000。
输出格式
输出文件名:640.out
共G行,每行一个字符串,不含双引号。
代码:
#include<bits/stdc++.h>
using namespace std;
int sz[1000005];
int main(){
int g,n;
int s,e;
bool pd=true;
cin>>g;
bool myddx[g];
for(int i=0;i<g;i++){
cin>>n;
for(int j=1;j<=n;j++){
cin>>s>>e;
for(int k=s-1;k<e;k++){
if(sz[k]!=1){
sz[k]=1;
}
else{
pd=false;
}
}
}
for(int k=0;k<=1000005;k++){
sz[k]=0;
}
if(pd==true) myddx[i]=true;
else myddx[i]=false;
}
for(int i=0;i<g;i++){
if(myddx[i]==true) cout<<"possible"<<endl;
else cout<<"impossible"<<endl;
}
return 0;
}