Cod sursa(job #1584263)

Utilizator Athena99Anghel Anca Athena99 Data 29 ianuarie 2016 21:08:59
Problema Numarare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin("numarare.in");
ofstream fout("numarare.out");

const int nmax= 100000;

int v[nmax+1], d[nmax+1];

int main(  ) {
    int n, sol, i, j= 1;
    fin>>n>>v[1];
    for ( i= 2; i<=n; ++i ) {
        fin>>v[i];
        v[i-1]= v[i-1]-v[i];
    }
    sol= n= n-1;
    for ( i= 1; i<=n; ++i ) {
        if ( i<d[j]+j ) {
            d[i]= min(d[j*2-i], d[j]+j-i);
        }
        if ( d[i]+i>=d[j]+j ) {
            j= i;
            for ( ; i-d[i]-1>=1 && i+d[i]+1<=n && v[i-d[i]-1]==v[i+d[i]+1]; ++d[i] ) ;
        }
        sol+= d[i];
    }

    fout<<sol<<"\n";

    return 0;
}