Cod sursa(job #2030101)

Utilizator refugiatBoni Daniel Stefan refugiat Data 1 octombrie 2017 08:51:50
Problema Numarare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("numarare.in");
ofstream so("numarare.out");
int v[100005],x[100005];
int main()
{
    int n;
    si>>n;
    si>>v[1];
    for(int i=2;i<=n;++i)
    {
        si>>v[i];
        v[i-1]=v[i-1]-v[i];
    }
    int nr,p;
    n--;
    nr=n;
    p=1;
    for(int i=1;i<=n;i++)
    {
        if(i<p+x[p])
            x[i]=min(x[2*p-i],p+x[p]-i);
        if(i+x[i]>=p+x[p])
        {
            p=i;
            while(i-x[i]-1>=1&&i+x[i]+1<=n&&v[i-x[i]-1]==v[i+x[i]+1])
                x[i]++;
        }
    }
    for(int i=1;i<=n;i++)
        nr=nr+x[i];

    so<<nr;
    return 0;
}