CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club

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;

}

 

你可能感兴趣的:(round)