Cod sursa(job #1738295)

Utilizator metrix007Lungu Ioan Adrian metrix007 Data 6 august 2016 13:36:46
Problema Numarare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#define INF 100008
#define NMAX 100000
using namespace std;

int a[2*NMAX+3],n,c,m;
long long p[2*NMAX+3],r,ct;

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

int main()
{
    in >> n;
    for(int i=1;i<n;i++)
    {
        in >> a[i];
    }
    a[0] = -7*INF;
    a[n+1] = 7*INF;
    n = n+1;

    c = 1;
    r = 1;
    a[1] = 0;
    for(int i=1;i<n;i++)
    {
        m = 2*c-i;
        if(i<r) p[i] = min(r-i,p[m]);
        else p[i] = 1;

        while(a[i+p[i]+2]+a[i-p[i]-2]==a[i-1]+a[i+1])
        {
            p[i]+=1;
        }

        if(i+p[i]>r)
        {
            c = i;
            r = p[i]+i;
        }
    }


    for(int i=1;i<n;i++)
    {
    //cout << p[i] << " " ;
      if(p[i]>0) ct+=p[i];

    }
    out <<ct;
    return 0;
}