Pagini recente » Cod sursa (job #318169) | Cod sursa (job #437308) | Cod sursa (job #2031559) | Cod sursa (job #2905519) | Cod sursa (job #635658)
Cod sursa(job #635658)
#include <iostream>
#include <fstream>
#include <string.h>
#define N 500
#define min(a,b) ((a>b)?b:a)
using namespace std;
ifstream f("palm.in");
ofstream g("palm.out");
int main() {
char s[N];
int o[N]={0},r[N]={0},n,i,temp,j,max=0,len,p,m;
f>>s;
n=strlen(s)-1;
o[0]=1,r[n]=1;
for(i=1;i<=n;i++) {
temp=s[i]-s[i-1];
if(0 == temp || 1 == temp) {
o[i]+=o[i-1]+1;
} else {
o[i]=1;
}
temp=s[n-i]-s[n-i+1];
if(0 == temp || 1 == temp) {
r[n-i]+=r[n-i+1]+1;
} else {
r[n-i]=1;
}
}
/*for(i=0;i<=n;i++) {
cout<<o[i]<<" ";
}
cout<<endl;
for(i=0;i<=n;i++) {
cout<<r[i]<<" ";
}*/
for(i=1;i<=n;i++) {
m=min(r[i+1],o[i-1]);
len=2*m+1;
p=1;
if(max < len) {
for(j=1;j<=m;j++) {
if(s[i+j]!=s[i-j]) {
p=0;
break;
}
}
if(!p) {
if(max < 2*(j-1)+1) {
max=2*(j-1)+1;
}
} else {
max=len;
}
}
}
//cout<<endl;
g<<max;
f.close();
g.close();
return 0;
}