Pagini recente » Cod sursa (job #1157026) | Cod sursa (job #1156536) | Cod sursa (job #1005377) | Cod sursa (job #619044) | Cod sursa (job #2847413)
#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;
while(in>>c)
{
s+=c;
s+='$';
}
return 0;
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-1],dr-i);
while(s[i+mana[i]+1]==s[i-mana[i]-1])mana[i]++;
if(i+mana[i]>dr)
{
mid=i;
dr=i+mana[i];
}
rez+=mana[i]/2;
}
out<<rez;
}