2016-07-16晚
题目大意:有一个房间,+ 表示进,- 表示出,后面的数字代表编号,问该房间最少能同时容纳多少人。
解题思路:用 now 统计当前人数,Max 表示历史最多人数,每改变一人就比较一次。
注意:-的时候有两种情况。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char c;
int tag[1000010];
int Max;
int now;
int num;
int main() {
int n;
while ( scanf("%d",&n) != EOF ) {
Max = 0;
now = 0;
memset( tag , 0 , sizeof(tag) );
for (int i = 0; i < n; i++) {
getchar();
c = getchar();
scanf("%d",&num);
if ( c == '+' ) {
now++;
tag[num] = 1;
}
else if ( c == '-' ) {
if ( tag[num] == 1 ) {
now--;
tag[num] = 0;
}
else if ( tag[num] == 0 )
Max++;
}
Max = max( now , Max );
}
cout << Max << endl;
}
return 0;
}