Cod sursa(job #2312549)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 5 ianuarie 2019 00:17:59
Problema Numarare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
using namespace std;
ifstream f ("numarare.in");
ofstream g ("numarare.out");
const int nmax=1e5+3;
int n,v[nmax],r,d[nmax],c;
long long sol;
int main()
{
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>v[i];
        v[i-1]=v[i]-v[i-1];
    }
    v[0]=2e9;
    v[n]=-2e9;
    sol=d[1]=c=r=1;
    for(int i=2;i<n;++i)
    {
        if(i<=r) d[i]=min(d[2*c-i], r-i);
        else d[i]=1;
        while(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];
    }
    g<<sol;
    return 0;
}