Pagini recente » Cod sursa (job #1009385) | Cod sursa (job #1292140) | Cod sursa (job #2568531) | Profil oana2598 | Cod sursa (job #1302241)
#include <fstream>
#include <string.h>
#define lmax 1000001
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
char c[lmax],v[2*lmax];
int lung,i,nr,ult,poz,nrsol,l[2*lmax];
int main()
{
f>>c;
lung=strlen(c)-1;
for (i=0;i<=lung;i++)
{
v[++nr]=c[i];
v[++nr]=' ';
}
v[0]=' ';
l[1]=1;
ult=1;
poz=1;
for (i=1;i<=nr;i++)
{
if (ult>i)
l[i]=min(l[2*poz-i],ult-i);
else
l[i]=1;
while (v[i-l[i]]==v[i+l[i]] && i-l[i]>=0 && i+l[i]<=nr+1)
l[i]++;
if (i+l[i]>ult)
{
ult=i+l[i];
poz=i;
}
}
for (i=1;i<=nr;i++)
nrsol+=(l[i]/2);
g<<nrsol;
f.close();
g.close();
}