Pagini recente » Cod sursa (job #1971067) | Cod sursa (job #3160381) | Cod sursa (job #1983955) | Cod sursa (job #1862073) | Cod sursa (job #2943524)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
char a[2000011],c;
int b[2000011],n,i,j,l,r,k;
long long s;
int main()
{
a[0]='*';
while(f>>c)
{
i++;
a[i]='#';
a[++i]=c;
}
a[++i]='#';
a[++i]='*';
n=i-1;
int l=1,r=1;
for(int i=1;i<=n;i++)
{
b[i]=max(0,min(r-i,b[l+r-i]));
while(a[i-b[i]]==a[i+b[i]])
b[i]++;
if(r<i+b[i])
l=i-b[i],r=i+b[i];
if(i%2==0)
s=s+(long long)(b[i]-1)/2+1;
else
s=s+(long long)b[i]/2;
}
g<<s;
return 0;
}