Cod sursa(job #2355365)

Utilizator niculaandreiNicula Andrei Bogdan niculaandrei Data 25 februarie 2019 23:57:13
Problema Numarare Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define NMAX 100005

using namespace std;

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

int N, v[NMAX], d[NMAX], L = 1, R = 1, len;
long long ans;

int main()
{
    fin >> N;
    for (int i = 1; i <= N; i++)
        fin >> v[i];
    if (N == 1)
    {
        fout << "0\n";
        return 0;
    }
    for (int i = 2; i <= N; i++)
    {
        if (i > R)
            len = 0;
        else
            len = min(d[L + R - i], R - i);
        while (i - 1 - len > 0 && i + len <= N && v[i + len] + v[i - 1 - len] == v[i] + v[i - 1])
            len++;
        ans += len;
        d[i] =len;
        if (i + len > R)
        {
            R = i + len;
            L = i - 1 - len;
        }
    }
    fout << ans << "\n";
    return 0;
}