Cod sursa(job #637194)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 20 noiembrie 2011 12:53:13
Problema PalM Scor 70
Compilator cpp Status done
Runda .com 2011 Marime 0.74 kb
#include <cstdio>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;

#define MAXN 512
char S[MAXN];
int i,len,j,p,q,N,Lmax;
int dp[MAXN][MAXN];

int main() {
	freopen("palm.in","r",stdin);
	freopen("palm.out","w",stdout);
	
	fgets(S,sizeof(S),stdin);
	N=strlen(S);
	while(S[N-1]<'a' || S[N-1]>'z') N--;
	
	for(i=0;i<N;i++) dp[i][i]=1;
	
	for(len=2;len<=N;len++)
		for(i=0;i<N-len+1;i++) {
			j=i+len-1;
			if(S[i]!=S[j]) continue;
			dp[i][j]=2;
			
			for(p=i+1;p<j;p++) {
				for(q=p+1;q<j;q++)
					if(S[p]==S[q] && S[p]>=S[i])
						dp[i][j]=max(dp[i][j],dp[p][q]+2);
				if(S[p]>=S[i])
					dp[i][j]=max(dp[i][j],3); // 2+ 1
			}
			Lmax=max(Lmax,dp[i][j]);
		}
	
	printf("%d",Lmax);
}