AcWing 1204. 错误票据
原题链接
简单
作者:
牛奶小柒Luke
,
2021-03-25 20:43:30
,
所有人可见
,
阅读 370
<sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言,<sstream> 更加安全、自动和直接
stringstream 对象用于输入一行字符串,以 空格 为分隔符把该行分隔开来
在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <sstream>
#include <cstdlib>
using namespace std;
const int N = 1e5 + 10;
int n;
int cnt;
int a[N];
int main(){
scanf("%d",&cnt);
string line;
getline(cin,line); //忽略第一行的回车
while(cnt--){
getline(cin,line);
stringstream ssin(line);
while(ssin >> a[n]) n++;
}
sort(a,a + n);
int res1,res2;
for(int i = 1;i < n;++i){
if(a[i] == a[i - 1]) res1 = a[i]; //重号
else if(a[i] >= a[i - 1] + 2) res2 = a[i] - 1; //断号
}
printf("%d %d\n",res2,res1);
return 0;
}