Cod sursa(job #123567)
| Utilizator | Data | 16 ianuarie 2008 17:01:23 | |
|---|---|---|---|
| Problema | PScPld | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<stdio.h>
#include<string.h>
char *s,sir[2005];
long int L,sol,i,lung[2005],j,ls;
int main()
{
FILE *f,*g;f=fopen("pscpld.in","r");g=fopen("pscpld.out","w");
sir[0]='#';
s=&sir[1];fscanf(f,"%s",s);
L=strlen(s);
for(i=L-1;i>=0;i--){ s[2*i+2]=' ';s[2*i+1]=s[i];}
s[0]=' ';
L=2*L;s[L+1]='*';
for(i=1;i<L;i++)
{ while(s[i+lung[i]+1]==s[i-lung[i]-1])lung[i]++;
for(j=1;j<lung[i]/2;j++)lung[i+j]=lung[i-j];
sol=sol+(lung[i]+i%2)/2;
}
fprintf(g,"%ld\n",sol);
return 0;
}
