Cod sursa(job #637177)

Utilizator PavelPavel Ana-Oriana Pavel Data 20 noiembrie 2011 12:37:41
Problema PalM Scor 10
Compilator cpp Status done
Runda .com 2011 Marime 1.68 kb
#include <fstream>
#include<cstring>

using namespace std;

ifstream in("palm.in");
ofstream out("palm.out");

char q[501];
int v[501];

int verif1(int i,int n)
{
    int s=1,c=1;
    if(v[i-1]>=v[i])
    {
            while(v[i-s]>=v[i-s+1] && v[i+s]>=v[i+s-1] && v[i-s]==v[i+s])
            {
                    c+=2;
                    s++;
                    if(i+s>n || i-s<1)
                        break;
            }
    }
    if(v[i-1]<=v[i])
    {
            while(v[i-s]<=v[i-s+1] && v[i+s]<=v[i+s-1] && v[i-s]==v[i+s])
            {
                    c+=2;
                    s++;
                    if(i+s>n || i-s<1)
                        break;
            }
    }
    return c;
}

int verif2(int i,int n)
{
    int s=1,c=2;
    if(v[i]!=v[i+1])
        return 1;
    if(v[i-1]>=v[i])
    {
            while(v[i-s]>=v[i-s+1] && v[i+1+s]>=v[i+s] && v[i-s]==v[i+1+s])
            {
                    c+=2;
                    s++;
                    if(i+1+s>n || i-s<1)
                        break;
            }
    }
    if(v[i-1]<=v[i])
    {
            while(v[i-s]<=v[i-s+1] && v[i+1+s]<=v[i+s] && v[i-s]==v[i+1+s])
            {
                    c+=2;
                    s++;
                    if(i+1+s>n || i-s<1)
                        break;
            }
    }
    return c;
}

int main()
{
    int n,i,max=1,d;
    in.getline(q,501);
    n=strlen(q);
    for(i=1;i<=n;i++)
        v[i]=q[i-1]-'a'+1;
    for(i=1;i<=n;i++)
    {
        d=verif1(i,n);
        if(d>max)
            max=d;
        d=verif2(i,n);
        if(d>max)
            max=d;
    }
    out<<max<<'\n';
    return 0;
}