Cod sursa(job #2525516)

Utilizator andreibazavanAndrei Bazavan andreibazavan Data 17 ianuarie 2020 15:23:31
Problema Numarare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int v[200005],d[200005],n,r,c;
long long sol;
int main(){
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        v[i-1]-=v[i];
    }
    for(int i=1;i<n;i++)
    {
        int poz=c*2-i;
        if(i<=r)
            d[i]=min(d[poz],r-i+1);
        while(i-d[i]>=1 && i+d[i]<n && v[i-d[i]]==v[i+d[i]])
            d[i]++;
        if(i+d[i]-1>r)
        {
            c=i;
            r=i+d[i]-1;
        }
        sol+=d[i];
    }
    fout<<sol<<'\n';
    return 0;
}