Pagini recente » Cod sursa (job #1402293) | Cod sursa (job #1191615) | Cod sursa (job #374898) | Cod sursa (job #513106) | Cod sursa (job #123265)
Cod sursa(job #123265)
#include<stdio.h>
#include<string.h>
char *s,sir[2000005];
long int i,lung[2000005],ll,pc,sol,emax,e;
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;
pc=1;
do
{ emax=(pc<ll-pc)?pc:(ll-pc);
for(e=1;e<=emax;e++)
if(s[pc-e]!=s[pc+e])break;
e--;
if(e){lung[pc]=e;for(i=1;i<=(e-1)/2;i++)lung[pc+i]=lung[pc-i];pc=pc+(e-1)/2+1;}
else pc++;
}
while(pc<ll);
for(i=1;i<ll;i++)
sol=sol+(lung[i]+i%2)/2;
fprintf(g,"%ld\n",sol);
return 0;
}