Cod sursa(job #123274)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 15 ianuarie 2008 11:39:59
Problema PScPld Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#include<string.h>
char *s,sir[2000005];
long int i,j,e[2000005],viz[2000005],ll,pc,ec,sc,ps,ss,pd,sol;
int main()
{
	FILE *f,*g;f=fopen("pscpld.in","r");g=fopen("pscpld.out","w");
	s=&sir[0];fscanf(f,"%s",s);
	ll=strlen(s);
	for(i=ll-1;i>=0;i--){s[2*i+1]=s[i];s[2*i+2]=' ';}s[0]=' ';ll=ll*2;
	for(pc=1;pc<ll;pc++)
	 { if(!viz[pc])
	   {
	      while(pc+e[pc]+1<=ll&&pc-e[pc]-1>=0&&s[pc+e[pc]+1]==s[pc-e[pc]-1])e[pc]++;
	      for(i=1;i<=ec;i++)
	      { if(i+e[pc-i]<e[pc])break;
		e[pc+i]=e[pc-i];viz[pc+i]=1;
	      }
	   }

	 }
	for(pc=1;pc<ll;pc=pc+2) e[pc]++;
        for(pc=1;pc<ll;pc++)sol+=e[pc];
        sol/=2;
	fprintf(g,"%ld\n",sol);
	return 0;
}