Cod sursa(job #1738793)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 7 august 2016 19:11:11
Problema Numarare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
using namespace std;
ifstream fi("numarare.in");
ofstream fo("numarare.out");
#define M 100003
#define inf 1000000
int n, i,st,dr,a[M],lg[M];
long long  sol;
int main()
{
fi>>n;
for (i = 1; i <= n; i++)  fi>>a[i];
a[0]=a[n + 1] = -inf;

for (i = 1; i < n; i++)
    {
        if (i + 1 <= dr) lg[i] = min(lg[2 * st - i], dr - i);

        while (a[i] + a[i + 1] == a[i + 1 + lg[i]] + a[i - lg[i]])
                                  lg[i]++;
        sol += 1LL * lg[i];

        if (i + lg[i] >= dr)
            {
            st = i;
            dr = i + lg[i];
           }
    }
fo<<sol<<'\n';
   return 0;
}