Pagini recente » Cod sursa (job #2432111) | Cod sursa (job #2670492) | Cod sursa (job #1152715) | Cod sursa (job #2566281) | Cod sursa (job #2847399)
#include <bits/stdc++.h>
using namespace std;
ifstream in("pscpld.in");
ofstream out("pscpld.out");
int mana[5000000];
int main()
{
vector<char> s;
char c;
while(in>>c)
{
s.push_back(c);
s.push_back('$');
}
s.pop_back();
int dr,mid;
dr=mid=-1;
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];
}
}
int rez=s.size()/2+1;
for(int i=0;i<s.size();i++)rez+=mana[i]/2;
out<<rez;
}