Pagini recente » Cod sursa (job #2284921) | Cod sursa (job #2677465) | Cod sursa (job #2124524) | Cod sursa (job #2409008) | Cod sursa (job #123255)
Cod sursa(job #123255)
#include<stdio.h>
#include<string.h>
char *s,sir[1000005];
long int i,lung[1000005],ls,l,r,sol;
int main()
{
FILE *f,*g;f=fopen("pscpld.in","r");g=fopen("pscpld.out","w");
s=&sir[0];fscanf(f,"%s",s);ls=strlen(s);
for(i=0;i<ls;i++)
{ if(lung[i])sol=sol+(lung[i]+1)/2;
else
{ lung[i]=1;l=i;r=i;
while(l-1>=0&&r+1<ls&&s[l-1]==s[r+1])
{ lung[i]+=2;l--;r++;lung[r]=lung[l];}
sol=sol+(lung[i]+1)/2;
}
}
for(i=0;i<ls;i++)lung[i]=0;
for(i=0;i<ls;i++)
if(s[i]==s[i+1])
{ if(lung[i])sol=sol+lung[i]/2;
else
{ l=i;r=i+1;lung[i]=2;
while(l-1>=0&&r+1<ls&&s[l-1]==s[r+1])
{ lung[i]+=2;l--;r++;lung[r]=lung[l];}
sol=sol+lung[i]/2;
}
}
fprintf(g,"%ld\n",sol);
return 0;
}