Pagini recente » Cod sursa (job #2495578) | Cod sursa (job #1113274) | Cod sursa (job #2154765) | Cod sursa (job #2579936) | Cod sursa (job #1240054)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#define nmax 505
using namespace std;
int lg,m[nmax][nmax][30];
char s[nmax];
int rez(){
lg=strlen(s);
for(int i=lg; i; i--){
m[i][i][s[i]-'a']=1;
for(int k=24; k>=0; k--)
m[i][i][k]=max(m[i][i][k], m[i][i][k+1]);
for(int j=i+1; j<=lg; j++){
for(int k=0; k<=25; k++){
m[i][j][k]=max(m[i][j-1][k], m[i+1][j][k]);
if(s[i]==s[j] && s[i]-'a'==k)
m[i][j][k]=(m[i+1][j-1][k]+2);
}
for(int k=24; k>=0; k--)
m[i][j][k]=max(m[i][j][k], m[i][j][k+1]);
}
}
return m[1][lg][0];
}
int main(){
freopen("palm.in", "r", stdin);
freopen("palm.out", "w", stdout);
cin.getline(s,nmax);
int x=rez();
printf("%d\n",x);
fclose(stdin);
fclose(stdout);
return 0;
}