Cod sursa(job #635598)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 19 noiembrie 2011 13:26:13
Problema PalM Scor 30
Compilator cpp Status done
Runda .com 2011 Marime 0.67 kb

#include <fstream>
#include <cstdio>
#include <string>
#include <algorithm>

using namespace std;

string s;
int sol,bst[512][512],n;

void read ()
{
	ifstream in ("palm.in");
	in>>s;
}

void solve ()
{
	n=s.size();
	sol=1;
	for(int i=0;i<n;++i)
		bst[i][i]=1;
	for(int i=0;i+1<n;++i)
		if(s[i]==s[i+1])
		{
			bst[i][i+1]=2;
			sol=2;
		}
	for(int k=3;k<=n;++k)
		for(int i=0;i+k<n+1;++i)
		{
			int j=i+k-1;
			if(s[i]==s[j]&&(s[i]+1==s[i+1]||s[i]==s[i+1])&&(s[j]+1==s[j-1]||s[j]==s[j-1]))
				bst[i][j]=bst[i+1][j-1]+2;
			sol=max(sol,bst[i][j]);
		}
}

void out ()
{
	freopen ("palm.out","w",stdout);
	printf("%d",sol);
}

int main ()
{
	read ();
	solve ();
	out ();
	return 0;}