Pagini recente » Cod sursa (job #2361218) | Cod sursa (job #2229425) | Cod sursa (job #2945997) | Cod sursa (job #2857095) | Cod sursa (job #3041689)
#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];
string r;
int len,k;
char c;
int main()
{
f>>r;
s.push_back('*');
for(auto x: r)
{
s.push_back(x);
s.push_back('*');
}
int st=0,dr=0;
int n=s.size();
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;
}