Cod sursa(job #2499547)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 26 noiembrie 2019 12:47:33
Problema PScPld Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
ifstream in("pscpld.in");
ofstream out("pscpld.out");
ll a[2000006];
int main(){
    ll n,i,c=0,r=0,sum=0;
    string s;
    in>>s;
    n=2*s.length()-1;
    for(i=0; i<n; ++i){
        if(i<r)
            a[i]=min(a[2*c-i], r-i);
        while(i-a[i]-1>=0 && i+a[i]+1<n && ((i+a[i]+1)%2 || s[(i+a[i]+1)/2]==s[(i-a[i]-1)/2]))
            ++a[i];
        if(i+a[i]>r)
            c=i, r=i+a[i];
        sum+=(a[i]+i%2)/2+1-i%2;
    }
    out<<sum;
    return 0;
}