Pagini recente » Cod sursa (job #3003563) | Cod sursa (job #3158179) | Cod sursa (job #926926) | Cod sursa (job #2863773) | Cod sursa (job #123274)
Cod sursa(job #123274)
#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;
}