题意:图书馆门口装了一个特殊装置,每当从门口进入一个人,每个人都有唯一的编号,编号在指定的范围内,就会记录 一条(+ 编号),每当一个人出去,就会记录(- 编号),在装置开启前或者关闭后馆内可能有人,为了让这个机器起到实际的作用,开发特殊装置的人想用装置的记录来推测馆内最小容量.
输入为n,表示n条记录
思路:模拟进出的过程.如果出去一个人,则检查这个是否之前进入过,之前没有记录进入,则容量计数器加1,如果进入一个人,则放入容器存储,如果容器的大小大于计数器的大小,则更新计数器的小为容器的大小,容器选用set
#include<iostream>
#include<set>
using namespace std;
int main()
{
int n,a,min=0;
char c;
set<int> st;
set<int>::iterator it;
cin>>n;
while(n--)
{
cin>>c>>a;
if(c=='+')
{
st.insert(a);
if(min<st.size())min = st.size();
}
else
{
bool ig = 0;
for(it = st.begin();it!=st.end();it++)
{
if(*it==a)
{
ig=1;
st.erase(a);
break;
}
}
if(!ig)
min++;
}
}
cout<<min<<endl;
}