Cod sursa(job #648064)

Utilizator andreea29Iorga Andreea andreea29 Data 12 decembrie 2011 23:21:58
Problema PalM Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[515][515][30], p[515], n, m[30], i, k, c, l, sol, j;
char s[515];
int main()
{
	ifstream f("palm.in");
	ofstream h("palm.out");
	
	f>>s;
	n=strlen(s);
	f.close();
	
	for(i=0; i<n; ++i)
		p[i]=s[i]-'a';
	
	for(i=n-1; i>=0; --i)
		for(j=i; j<n; ++j)
		{
			c=p[j];
			if(i==j)
				a[i][j][c]=1;
			else	//daca litera curenta egala cu prima litera
				if (p[i]==c)
			for(l=c; l<=25; ++l)
				a[i][j][c]=max(a[i][j][c],a[i+1][j-1][l]+2);
			for(l=25;l>=0;--l)
				m[l]=max(m[l+1],max(a[i+1][j][l],a[i][j-1][l]));
			for(c=0;c<=25;++c)
					a[i][j][c]=max(a[i][j][c],m[c]);
		}
	sol=0;
	for(i=0; i<n; ++i)
		for(j=i; j<n; ++j)
			for(l=25; l>=0; --l)
				sol=max(sol,a[i][j][l]);
	h<<sol<<'\n';
	
	
	
	h.close();
	return 0;
	
}