Cod sursa(job #2955338)

Utilizator doruliqueDoru MODRISAN dorulique Data 16 decembrie 2022 19:09:12
Problema PScPld Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
char q[1000001],s[2100000];
int p[2100000];
int main()
{
    s[0]=253;
    s[1]=254;
    int i=0,j=2,l,r;
    fin.getline(q,1000001);
    for(i=0; q[i]; i++)
        s[j++]=q[i],s[j++]=254;
    s[j]=0;
    p[1]=0;
    l=r=1;
    for(i=2; i<j; i++)
    {
        if(i>r)
            p[i]=0;
        else
            p[i]=min(p[l+r-i],r-i);
        while(s[i-p[i]]==s[i+p[i]])
            p[i]++;
        p[i]--;
        if(i+p[i]>r)r=i+p[i];
    }
    ///cout<<s<<"\n";
    long long s=0;
    for(i=0;i<j;i++)s+=(p[i]+1)/2;
    fout<<s<<"\n";
    return 0;
}