Cod sursa(job #984457)

Utilizator dariusdariusMarian Darius dariusdarius Data 14 august 2013 16:04:30
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,d[505][505][30];
char s[505];
int solve()
{
    n=strlen(s+1);
    for(int i=n;i;i--)
    {
        d[i][i][s[i]-'a']=1;
        for(int k=24;k>=0;k--)
            d[i][i][k]=max(d[i][i][k],d[i][i][k+1]);
        for(int j=i+1;j<=n;j++)
        {
            for(int k=0;k<26;k++)
            {
                d[i][j][k]=max(d[i][j-1][k],d[i+1][j][k]);
                if(s[i]==s[j] && s[i]-'a'==k)
                    d[i][j][k]=(d[i+1][j-1][k]+2);
            }
            for(int k=24;k>=0;k--)
                d[i][j][k]=max(d[i][j][k],d[i][j][k+1]);
        }
    }
    return d[1][n][0];
}
int main()
{
    freopen("palm.in", "r", stdin);
    freopen("palm.out", "w", stdout);
    gets(s+1);
    printf("%d",solve());
    return 0;
}