Cod sursa(job #2705347)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 12 februarie 2021 14:05:46
Problema Numarare Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("numarare.in");
ofstream g("numarare.out");
int n,v[10005],z[10005];
long long ans;
int main()
{
	f>>n;
	for(int i=1;i<=n;i++)
    {
        f>>v[i];
	}
	int R=0,C=0;
	for(int i=1;i<n;i++)
	{
		int aux=2*C-i;
		if(i>R || z[aux]>=R-i)
		{
			if(i>R) R=i;
			int k=R+1;
			int sum=v[i]+v[i+1];
			while(k<=n && (2*i-k+1>0) && (v[k]+v[2*i-k+1]==sum))
				k++;
			k--;
			z[i]=k-i;
			if(k>R)
			{
				C=i;
				R=k;
			}
		}
		else z[i]=z[aux];
		ans+=z[i];
	}
	g<<ans<<'\n';
	return 0;
}