题目大意:
一共有N个人员来往记录,+num表示编号为num的人来到了这里,-num表示编号为num的人离开了这里。
问这里最多需要容纳多少个人。
思路:
首先我们统计初始有多少人(即没有+num的操作,就有-num操作的num的人数);
然后动态维护这个过程即可。
时间复杂度O(n)
Ac代码:
#include<stdio.h>
#include<string.h>
#include<map>
using namespace std;
char a[150][2];
int b[150];
int main()
{
int n;
while(~scanf("%d",&n))
{
map<int ,int >s;
int tmp=0;
int output=0;
int chu=0;
for(int i=0;i<n;i++)
{
scanf("%s%d",a[i],&b[i]);
if(a[i][0]=='-')
{
if(s[b[i]]==0)
{
chu++;
}
}
s[b[i]]=1;
}
s.clear();
tmp=chu;
output=chu;
for(int i=0;i<n;i++)
{
if(a[i][0]=='+')
{
tmp++;
}
else
{
tmp--;
}
output=max(tmp,output);
}
printf("%d\n",output);
}
}