Pagini recente » Cod sursa (job #1840397) | Cod sursa (job #1702917) | Cod sursa (job #420870) | Cod sursa (job #2854296) | Cod sursa (job #3041687)
#include <fstream>
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
int n,m;
const int N=1000005;
string s;
int a[2*N];
int len,k;
char c;
int main()
{
s[0]='*';
while(f>>c)
{
s[++k]=c;
s[++k]='*';
}
int st=0,dr=0;
int n=k+1;
for(int i=0;i<n;i++)
{
if(i<=dr)
len=min(dr-i+1,a[st+dr-i]);
else
len=1;
while(s[i-len]==s[i+len]&&i-len>=0&&i+len<n)
len++;
a[i]=len;
if(len+i-1>dr)
{
dr=i+len-1;
st=i-len+1;
}
}
long long s=0;
for(int i=0;i<n;i++)
s=s+a[i]/2;
g<<s;
return 0;
}