开数组 读入数据
记录最小值和最大值
每次读入x;
让a[x]++;
从最小值开始 向上扫 当扫到a[x]==0时候为断号
扫到a[x]>1为重号;
该题的小技巧
未知长度的数据的读入方式
1.首先在头文件敲上
#include<sstream>
#include<string>
#include<cstring>
2.
初始化 一个字符串line
string line ;
3.先敲一个 getline(cin,line); 忽略掉第一行回车
int T;
cin>>T;
while(T--){
getline(cin,line);
stringstream ssin(line);
int x;
while(ssin>>x){
//逐个读入处理
}
}
完整代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include <sstream>
#include<string>
using namespace std;
const int N=1e5+10;
int i=0;
int cnt=0;
int a[N];
int main(){
int cnt;
cin >> cnt;
string line;
int minn=1e7,maxx=-1;
getline(cin, line); // 忽略掉第一行的回车
while (cnt -- )
{
getline(cin, line);
stringstream ssin(line);
int x;
while (ssin >> x) {
a[x]++;
maxx=max(maxx,x);
minn=min(minn,x);
}
}
int n,m;
for(int i=minn;i<=maxx;i++){
if(a[i]>1){
n=i;
}
if(a[i]==0){
m=i;
}
//cout <<i<<' '<<a[i]<<endl;
}
cout<<m<<' '<<n;
return 0;
}