Pagini recente » Cod sursa (job #2876136) | Cod sursa (job #634176) | Cod sursa (job #1257226) | Cod sursa (job #1111757) | Cod sursa (job #963599)
Cod sursa(job #963599)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
long long sol,i,n,nr,dr,st,p,c,d[2000100];
char v[2000100],s[1000100];
int main()
{
f>>(s+1);
v[0]='!';
n=strlen(s+1);
for(i=1;i<=n;++i)
{
v[++nr]=s[i];
v[++nr]=' ';
}
v[nr]=')';
n=nr-1;
for(i=1;i<=n;++i)
{
if(i<dr)
{
p=c-(i-c);
if(d[p]+i-1<dr)
d[i]=d[p];
else
{
d[i]=dr-i+1;
st=i-d[i];
++dr;
while(v[st]==v[dr])
{
++dr;
--st;
++d[i];
}
--dr;
c=i;
}
}
else
{
st=dr=i;
while(v[st]==v[dr])
{
++d[i];
--st;
++dr;
}
--dr;
c=i;
}
}
for(i=1;i<=n;i+=2)
sol+=(d[i]+1)/2;
for(i=2;i<=n;i+=2)
sol+=d[i]/2;
g<<sol<<'\n';
return 0;
}