Usaco1.1 beads

3291 ワード

/*
ID: ljfcnya1
PROG: beads
LANG: C++
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define REP(i, a, b) for(int i = (a), _end_ = (b);i <= _end_; ++ i)
#define mem(a) memset((a), 0, sizeof(a))
#define str(a) strlen(a)

const int maxn = 10000;

int n, m;

int ans[maxn];

string s;

int main() {
    freopen("beads.in", "r", stdin);
    freopen("beads.out", "w", stdout);
    scanf("%d", &n);
    getchar();
    cin>>s;
    s += s;
    REP(i, 0, n) {
        int j = i - 1;
        while(s[++j] == 'w');
        char tmp = s[j];
        while((s[++j] == tmp || s[j] == 'w') && (j >= i && j < i + n));
        ans[i] += j - i;
        if(ans[i] == n)
            continue;   
        j = i + n;
        while(s[--j] == 'w');
        tmp = s[j];
        while((s[--j] == tmp || s[j] == 'w') && (j >= i && j < i + n));
        ans[i] += i + n - j - 1;
        if(ans[i] > n)  ans[i] = n;
    }
    int sum = 0;
    REP(i, 1, n)
        sum = max(sum, ans[i]);
    printf("%d
"
, sum); return 0; }