Cod sursa(job #1547995)

Utilizator Malan_AbeleMalan Abele Malan_Abele Data 10 decembrie 2015 10:59:25
Problema PalM Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("palm.in");
ofstream out("palm.out");
char s[510];
int lmax,n,l,start,finish;
int main()
{
    in>>s;
    n=strlen(s);
    for(int i=0;i<n;++i)
    {
        l=1;
        while(i-l>=0 && i+l<n && s[i-l]==s[i+l] && s[i-l]<=s[i-l+1] && s[i+l-1]>=s[i+l])
            ++l;
        if(lmax<2*l-1){
            lmax=2*l-1;
            start=i-l+1;
            finish=i+l-1;
        }
        l=1;
        while(i-l>=0 && i+l<n && s[i-l]==s[i+l] && s[i-l]>=s[i-l+1] && s[i+l-1]<=s[i+l])
            ++l;
        if(lmax<2*l-1){
            lmax=2*l-1;
            start=i-l+1;
            finish=i+l-1;
        }
        l=0;
        while(i-l>+0 && i+l<n && s[i-l]==s[i+l+1] && s[i-l]<=s[i-l+1] && s[i+l]>=s[i+l+1])
            ++l;
        if(lmax<2*l){
            lmax=2*l;
            start=i-l+1;
            finish=i+l;
        }
        l=0;
        while(i-l>+0 && i+l<n && s[i-l]==s[i+l+1] && s[i-l]>=s[i-l+1] && s[i+l]<=s[i+l+1])
            ++l;
        if(lmax<2*l){
            lmax=2*l;
            start=i-l+1;
            finish=i+l;
        }
    }
    out<<lmax;
    return 0;
}