Pagini recente » Cod sursa (job #1214323) | Cod sursa (job #544996) | Istoria paginii runda/warmup/clasament | Cod sursa (job #2541219) | Cod sursa (job #1564262)
#include <cstdio>
#define MAXN 500
char s[MAXN+1];
int d[MAXN+1][MAXN+1];
int main(){
int n, i, l;
char ch;
FILE *fin, *fout;
fin=fopen("palm.in", "r");
fout=fopen("palm.out", "w");
ch=fgetc(fin);
n=0;
while(ch!='\n'){
s[++n]=ch;
ch=fgetc(fin);
}
for(ch='z'; ch>='a'; ch--){
for(i=1; i<=n; i++){
d[i][i]=(s[i]>=ch);
}
for(i=1; i<n; i++){
d[i][i+1]=2*((s[i]==s[i+1])&&(s[i]>=ch));
if((d[i][i+1]!=2)&&((s[i]>=ch)||(s[i+1]>=ch))){
d[i][i+1]=1;
}
}
for(l=2; l<n; l++){
for(i=1; i+l<=n; i++){
if(d[i][i+l]<d[i][i+l-1]){
d[i][i+l]=d[i][i+l-1];
}
if(d[i][i+l]<d[i+1][i+l]){
d[i][i+l]=d[i+1][i+l];
}
if((s[i]==s[i+l])&&(s[i]==ch)&&(d[i][i+l]<d[i+1][i+l-1]+2)){
d[i][i+l]=d[i+1][i+l-1]+2;
}
}
}
}
fprintf(fout, "%d\n", d[1][n]);
fclose(fin);
fclose(fout);
return 0;
}