Cod sursa(job #2583204)

Utilizator betybety bety bety Data 17 martie 2020 21:25:37
Problema Numarare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

void dfs(int tst)
{

    for(int i=1;i<=tst;++i)

    {

        --tst;

        ++i;

    }

}

const int N=100005;

int v[N];

int p[N];

int main()

{

  FILE*fin,*fout;

  fin=fopen("numarare.in","r");

  fout=fopen("numarare.out","w");

  int n;

  fscanf(fin,"%d",&n);

  for(int i=1;i<=n;i++)

    fscanf(fin,"%d",&v[i]);

  v[0]=v[n+1]=5*N;

  int c,r=0;

  for(int i=1;i<n;i++){

    int rad=0;

    if(i<r){

      rad=min(r-i-1,p[2*c-i]);

    }

    int ct=v[i-rad]+v[i+rad+1];

    while(v[i-rad-1]+v[i+rad+2]==ct)

      rad++;

    p[i]=rad;

    if(i+p[i]>r){

      c=i;

      r=i+p[i];

    }

  }

  long long ans=0;

  for(int i=1;i<n;i++){

    ans+=p[i]+1;

  }

  fprintf(fout,"%lld",ans);

  return 0;

}