Cod sursa(job #2943524)

Utilizator Zed1YasuoAlex Birsan Zed1Yasuo Data 21 noiembrie 2022 09:38:23
Problema PScPld Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
char a[2000011],c;
int b[2000011],n,i,j,l,r,k;
long long s;
int main()
{
    a[0]='*';
    while(f>>c)
    {
        i++;
        a[i]='#';
        a[++i]=c;
    }
    a[++i]='#';
    a[++i]='*';
    n=i-1;
    int l=1,r=1;
    for(int i=1;i<=n;i++)
    {
        b[i]=max(0,min(r-i,b[l+r-i]));
        while(a[i-b[i]]==a[i+b[i]])
            b[i]++;
        if(r<i+b[i])
            l=i-b[i],r=i+b[i];
        if(i%2==0)
            s=s+(long long)(b[i]-1)/2+1;
        else
            s=s+(long long)b[i]/2;
    }
    g<<s;
    return 0;
}