Cod sursa(job #3350826)

Utilizator CarenaMironov Cezar Luca Carena Data 13 aprilie 2026 17:14:46
Problema PScPld Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <fstream>
#define int long long

using namespace std;

ifstream in("pscpld.in");
ofstream out("pscpld.out");

const int NMAX=2e6+5;
int n, ans, p[NMAX];
char ch; string s;

signed main()
{
    while(in>>ch)
        s+='$', s+=ch;
    s+='$';
    n=s.size();
    int k=0;
    for(int i=1;i<n;i++)
    {
        if(i<=k+p[k])
            p[i]=min(p[2*k-i], k+p[k]-i);
        while(i+p[i]+1<n && s[i+p[i]+1]==s[i-p[i]-1])
            p[i]++;
        if(i+p[i]>k+p[k])
            k=i;
        ans+=(p[i]+1)/2;
    }
    out<<ans;
    return 0;
}