Cod sursa(job #1001045)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 24 septembrie 2013 12:51:09
Problema Numarare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <cstring>

using namespace std;

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

int n,k,maxi,sol;
int v[100001],p[100001];

int main()
{
    fin>>n;

    for (int i=1; i<=n; ++i)
    {
        fin>>v[i];
    }

    p[0]=1;

    for (int i=1; i<n; ++i)
    {
        int current = min (p[2*maxi-i],2*maxi - i -(maxi-p[maxi]));

        int val = v[i]+v[i+1];

        int j,k;

        for (j=i-current,k=i+current+1; j>=1 && k<=n; --j,++k)
        {
            if (v[j]+v[k]!=val) break;
        }

        p[i] = k-i-1;
        sol += p[i];
        if (p[i] + i > p[maxi] + maxi) maxi = i;
    }

    fout<<sol;
}