Pagini recente » Cod sursa (job #821700) | Cod sursa (job #1345863) | Cod sursa (job #886567) | Cod sursa (job #110188) | Cod sursa (job #2537337)
#include<fstream>
#include<cstring>
using namespace std;
int n, i, j, lg, ii, sol;
char s[505];
int d[505][505][28];
ifstream fin("palm.in");
ofstream fout("palm.out");
int main(){
fin>> s + 1;
n = strlen(s + 1);
for(i = 1; i <= n; i++){
s[i] -= 'a' - 1;
}
for(lg = n; lg >= 1; lg--){
for(i = 1; i <= n - lg + 1; i++){
j = i + lg - 1;
for(ii = 1; ii <= 26; ii++){
d[i][j][ii] = max(d[i - 1][j][ii], max(d[i][j + 1][ii], d[i][j][ii - 1]) );
if(s[i - 1] == s[j + 1] && s[i - 1] == ii){
d[i][j][ii] = max(d[i][j][ii], 2 + d[i - 1][j + 1][ii]);
}
sol = max(sol, d[i][j][ii]);
if(s[i] == s[j] && s[i] == ii && i != j){
sol = max(sol, d[i][j][ii] + 2);
}
if(s[i] == ii){
sol = max(sol, d[i][j][ii] + 1);
}
}
}
}
fout<< sol <<"\n";
return 0;
}