http://codeforces.com/contest/245/problem/E
枚举任意段内 ‘+’个数和‘-’个数的差(绝对值) 取最大
可以 O(n^2)
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<queue>
#include<stack>
#include <iomanip>
using namespace std;
#define LL long long
const int INF=0x3f3f3f3f;
int main()
{
//freopen("data.in","r",stdin);
string s;
while(cin>>s)
{
int ans=0;
int n=s.size();
for(int i=0;i<n;++i)
{
int sum1=0;
int sum2=0;
for(int j=i;j<n;++j)
{
if(s[j]=='+')
++sum1;
else
++sum2;
ans=max(ans,abs(sum1-sum2));
}
}
cout<<ans<<endl;
}
return 0;
}