Cod sursa(job #641068)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 27 noiembrie 2011 10:36:45
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
#include <iostream>
#include <string.h>
using namespace std;

char v[505];
int dp[505][505][26];

int main()
{
	freopen("palm.in","r", stdin);
	freopen("palm.out","w", stdout);
	scanf("%s",v);
	int n=strlen(v);
	for(int i=0;i<n;i++) dp[i][i][v[i]-'a']=1;
	
	for(int d=2;d<=n;d++)
	{
		for(int i=0;i+d-1<n;i++)
		{
			int j=i+d-1;
			
			for(int k=0;k<26;k++)
			{
				if(v[i]==v[j] && v[i]-'a'==k)
				{
					for(int k1=k;k1<26;k1++)
						dp[i][j][k]=max(dp[i][j][k], 2+dp[i+1][j-1][k1]);
				}
				else dp[i][j][k]=max(dp[i+1][j][k],dp[i][j-1][k]);
			}
			
			
		}
	
	
	}
	int maxm=0;
	for(int i=0;i<26;i++) maxm=max(maxm,dp[0][n-1][i]);
	
	printf("%d",maxm);
	
	return 0;
}