假定裁判说真话,给数x,如果其对应字符为‘.’,则满足条件的数就是x;如果是‘+’ ,要猜的数可以是(-INT_MAX,x-1],如果是‘-’ ,目标数可以是[x+1,INT_MAX);
数组开不了那么大,用map优化;
#include<bits/stdc++.h>
using namespace std;
const int N=INT_MAX;
map<int,int>mp;
int main()
{
int n; cin>>n;
while(n--)
{
int x;char ch; cin>>x>>ch;
if(ch=='.') {
mp[x]+=1; mp[x+1]+=-1;
}else if(ch=='+'){
mp[-N]+=1; mp[x]+=-1;
}else {
mp[x+1]+=1; mp[N]+=-1;
}
}
int sum=0, ans=0;
for(auto it:mp)
{
sum+=it.second;
ans=max(ans,sum);
}
cout<<ans;
}