题目描述:
主要思路:
和括号序列有一点相似之处
#include<iostream>
#include<algorithm>
#include<cstring>
#include<unordered_map>
using namespace std;
const int N=1e5+10;
typedef pair<int,int> pa;
pa q[N];
int n;
unordered_map<int,int> book;
int main()
{
cin>>n;
char op;
int x;
for(int i=1;i<=n;i++)
{
cin>>x>>op;
int xx;
if(op=='G') xx=1;
else xx=-1;
q[i]={x,xx};
}
sort(q+1,q+1+n);
int sum=0,ans=0;
int last=1;
for(int i=1;i<=n;i++)
{
if(!book.count(sum)) book[sum]=q[i].first;
sum+=q[i].second;
if(book.count(sum)) ans=max(ans,q[i].first-book[sum]); //计算两种奶牛都有的长度
if(i==1||q[i].second!=q[i-1].second) last=q[i].first;
ans=max(ans,q[i].first-last);
}
cout<<ans<<endl;
return 0;
}