USACO (Ad Hoc) : Broken Necklace


/*
Link :http://train.usaco.org/usacoprob2?a=SeMATkWVe9o&S=beads
*/

/*
PROG: beads
LANG: C++
*/
#include <bits/stdc++.h>

#define pii pair <int,int>
#define sc scanf
#define pf printf
#define Pi 2*acos(0.0)
#define ms(a,b) memset(a, b, sizeof(a))
#define pb(a) push_back(a)
#define MP make_pair
#define oo 1<<29
#define dd double
#define ll long long
#define EPS 10E-10
#define ff first
#define ss second
#define MAX 10000
#define CIN ios_base::sync_with_stdio(0)
#define SZ(a) (int)a.size()
#define getint(a) scanf("%d",&a)
#define loop(i,n) for(int i=0;i<n;i++)
#define TEST_CASE(t) for(int z=1;z<=t;z++)
#define PRINT_CASE printf("Case %d: ",z)
#define all(a) a.begin(),a.end()
#define intlim 2147483648
#define inf 1000000
#define rtintlim 46340
#define llim 9223372036854775808
#define rtllim 3037000499
#define ull unsigned long long
#define I int

using namespace std;


int main()
{
    freopen("beads.in","r",stdin);
    freopen("beads.out","w",stdout);
    string str;
    int cnt,ans=0;
    int n;
    cin>>n>>str;
    for(int i=0;i<n;i++)
    {
        char color='w';
        bool taken_half=0;
        char current_color;
        cnt=0;
        for(int j=0;j<n;j++)
        {
            current_color=str[(i+j)%n];
            if(current_color!='w')
            {
               if(color=='w')
               {
                   color=current_color;
               }
               else if(color!=current_color)
               {
                   if(taken_half)
                    break;
                   else
                   {
                       taken_half=1;
                       color=current_color;
                   }
               }
            }
            cnt++;
        }
        ans=max(ans,cnt);
    }
    cout<<ans<<endl;
    return 0;
}

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments