Cod sursa(job #58343)

Utilizator FlorianFlorian Marcu Florian Data 5 mai 2007 16:27:19
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<string.h>
#define lgmax 1000000
long lg,rez;
char*s= new char[lgmax];
void citire()
	{
	FILE*f=fopen("pscpld.in","r");
	fscanf(f,"%s",s);
	lg=strlen(s);
	fclose(f);
	}
int palindrom(long inceput,long sfarsit)
	{
	while(inceput<sfarsit)
		{
		if (s[inceput]!=s[sfarsit]) return 0;
		sfarsit--; inceput++;
		}
	return 1;
	}
void dinamic()
	{
	long i,j,nrmin;
	long*nrp=new long[lgmax];
	for(i=0;i<lg;i++)
		if (palindrom(0,i)) nrp[i]=1;
		else
			{
			nrmin=lgmax+2;
			for(j=0;j<i;++j)
				if (palindrom(j+1,i)&&nrp[j]<nrmin)
				nrmin=nrp[j];
			nrp[i]=nrmin+1;
			}
	rez=nrp[lg-1];
	}
int main()
	{
	citire();
	dinamic();
	FILE*g=fopen("pscpld.out","w");
	fprintf(g,"%ld",rez+lg);
	return 0;}