Cod sursa(job #3333454)

Utilizator oliv_1Bostinescu Octavian oliv_1 Data 13 ianuarie 2026 16:54:31
Problema PScPld Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
int man[200005];
int main()
{
    ifstream cin("pscpld.in");
    ofstream cout("pscpld.out");
    string ini,s;
    int mid=0;
    cin>>ini;
    s="&&";
    for(auto it: ini)
    {
        s+=it;
        s+='&';
    }
    for(int i=1;i<s.size();i++)
    {
        if(mid+man[mid]>=i)
        {
            man[i]=min(man[2*mid-i], mid+man[mid]-i);
        }
    while(i+man[i]+1<s.size()&&i-man[i]>=2 &&s[i+man[i]+1]==s[i-man[i]-1])
        man[i]++;
        if(i+man[i]>=mid+man[mid])
            mid=i;
    }
    long long int ans=0;
    for(int i=1;i<s.size();i++)
    {
        ans+=(man[i]+1)/2;
    }
    cout<<ans;
    return 0;
}