Pagini recente » Cod sursa (job #973978) | Cod sursa (job #1165176) | Cod sursa (job #1260290) | Cod sursa (job #1503105) | Cod sursa (job #2847437)
#include <bits/stdc++.h>
using namespace std;
ifstream in("pscpld.in");
ofstream out("pscpld.out");
int mana[2*1000005];
int main()
{
string s;
char c;
s+='$';
while(in>>c)
{
s+=c;
s+='$';
}
int dr,mid;
dr=mid=-1;
int rez=s.size()/2;
for(int i=0;i<s.size();i++)
{
if(i<=dr)mana[i]=min(mana[2*mid-i],dr-i);
while(s[i+mana[i]+1]==s[i-mana[i]-1]&&i+mana[i]+1<s.size())mana[i]++;
if(i+mana[i]>dr)
{
mid=i;
dr=i+mana[i];
}
rez+=mana[i]/2;
}
out<<rez;
}