Cod sursa(job #2921996)

Utilizator mihneazzzMacovei Daniel mihneazzz Data 2 septembrie 2022 19:24:05
Problema Numarare Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#define N 100005
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int n,a[N],v[N],x,d[N],ct;
long long Manacher(int* s)
{
    int l=1,r=1;
    for(int i=2;i<n;i++)
    {
        d[i]=max(0,min(r-i,d[l+(r-i)]));
        while(i+d[i]<n&&i-d[i]>0&&s[i-d[i]]==s[i+d[i]]) d[i]++;
        if(i+d[i]>r) l=i-d[i],r=i+d[i];
    }
    for(int i=1;i<=n;i++) ct+=d[i];
    ///for(int i=1;i<=n;i++) cout<<d[i]<<" ";
    return ct;
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)fin>>a[i];
    for(int i=1;i<n;i++) v[i]=a[i+1]-a[i];
    if(n==1) {fout<<"0\n";return 0;}
    else fout<<Manacher(v);
    return 0;
}