Pagini recente » Cod sursa (job #296950) | Cod sursa (job #2736702) | Monitorul de evaluare | Cod sursa (job #178464) | Cod sursa (job #636618)
Cod sursa(job #636618)
#include<stdio.h>
int f[501];
char ch;
int n,x,y,i,max;
bool palindrom(int x,int y)
{
int nr=1,i,z;
for(i=y;i>=x;--i)
if(f[i]!=f[i-1])
break;
else
++nr;
z=2*y-nr-x+1;
for(i=x;i<x+y-nr;++i)
if(f[i]==f[z-i+x])
continue;
else
return 0;
return 1;
}
int maxim(int x,int y)
{
int nr,i,z;
for(i=y;i>=x;--i)
if(f[i]!=f[i-1])
break;
else
++nr;
z=(y-x+1)*2-nr;
return z;
}
int main()
{
freopen("palm.in","r",stdin);
freopen("palm.out","w",stdout);
while(scanf("%c",&ch)!=' ' || scanf("%c",&ch)!=EOF)
{
if(ch==' ' || ch=='\n')
break;
f[++n]=ch-96;
}
x=1;
for(i=1;i<n;++i)
if(f[i]<=f[i+1])
y=i+1;
else
{
if(palindrom(x,y)==1)
if(maxim(x,y)>max)
max=maxim(x,y);
x=i+1;
}
x=1;
for(i=2;i<=n;++i)
if(f[i]>=f[i+1])
y=i+1;
else
{
if(palindrom(x,y)==1)
if(maxim(x,y)>max)
max=maxim(x,y);
x=i+1;
}
printf("%d\n",max);
return 0;
}