Cod sursa(job #1240054)

Utilizator tudormaximTudor Maxim tudormaxim Data 10 octombrie 2014 12:50:39
Problema PalM Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#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;
}