大神们为什么答案错误啊?
//P5250 【深基17.例5】木材仓库 集合
#include<iostream>
#include<set> //集合的头文件
#include<cmath>
#include<vector>
using namespace std;
int main()
{
long long op, a, b, n, inf = 9999999999, min;
set <int> s; //创建集合
vector <int> v;
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> op;
switch(op)
{
case 1: //1 是进货
cin >> a;
if(s.find(a) == s.end()) //集合查找返回的是指针,而且是从头到尾开始查找的
//这里if语句的意思是集合中没有a这个元素
s.insert(a); //在集合中插入元素
else
cout << "Already Exist" << endl;
break;
case 2: //2 是出货
cin >> b;
if(s.size() == 0) //集合为空
//cout << "Empty" << endl; 这样会先输出Empty 所以屏蔽了放在下边
break;
else if(s.find(b) != s.end()) //表示集合中含有b这个元素
{
v.push_back(b);
s.erase(b); //删除
}
else
{
for(auto p = s.begin(); p != s.end(); p++)
{
if(abs(*p - b < inf))
{
inf = *p - b;
min = *p;
}
}
v.push_back(min);
s.erase(min); //出库了,应在集合中进行删除
inf = 9999999999;
}
break;
}
}
for(auto p = v.begin(); p != v.end(); p++)
cout << *p << endl;
if(s.size() == 0) //集合为空
cout << "Empty" << endl;
system("pause");
return 0;
}