Cod sursa(job #2679748)

Utilizator BogdanTicuTicu Bogdan Valeriu BogdanTicu Data 1 decembrie 2020 13:40:11
Problema Numarare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream in("numarare.in");
ofstream out("numarare.out");
 
int v[1000005],z[1000005];
long long ans;
int main()
{
	int n;
	in>>n;
	for(int i=1;i<=n;i++)
		in>>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];
	//	cout<<z[i]<<" ";
		ans+=z[i];
	}
	out<<ans;
	return 0;
}