Cod sursa(job #2542080)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 9 februarie 2020 14:18:10
Problema PalM Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<bits/stdc++.h>
using namespace std;

const int maxN=(5e2)+5;
char s[maxN];
int dp[maxN][maxN];

int main()
{
    freopen("palm.in","r",stdin);
    freopen("palm.out","w",stdout);

    scanf("%s",s+1);

    int n=strlen(s+1);

    for(int let='z';let>='a';let--)
    {

        for(int i=1;i<=n;i++)
            if(s[i]==let) dp[i][i]=1;

        for(int l=2;l<=n;l++)
        {
            for(int i=1;(i+l-1)<=n;i++)
            {
                int j=i+l-1;
                dp[i][j]=max(dp[i][j],max(dp[i][j-1],dp[i+1][j]));
                if(s[i]==s[j] && s[i]==let) dp[i][j]=max(dp[i][j],2+dp[i+1][j-1]);
            }
        }
    }

    printf("%d\n",dp[1][n]);

    return 0;
}