Pagini recente » Cod sursa (job #2619250) | Cod sursa (job #539523) | Cod sursa (job #850920) | Cod sursa (job #1150594) | Cod sursa (job #2957219)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("numarare.in");
ofstream fout ("numarare.out");
const int NMAX=1e5+5;
const int INF=1e9;
int a[NMAX];
int v[NMAX];
int dp[NMAX];
int lung;
int main()
{
int n,i,j,x=0,y=0,dist;
long long kon=0;
fin>>n;
for(i=0;i<n;i++)
fin>>a[i];
for(i=0;i<n;i++)
v[i]=a[i+1]-a[i];
for(i=0;i<n-1;i++)
{
if(i>y)
dist=1;
if(i<=y)
dist=min(y-i+1,dp[x+y-i]);
while(i+dist<n)
{
if(i-dist<0)
break;
if(v[i-dist]!=v[i+dist])
break;
dist++;
}
dp[i]=dist;
if(i+dist-1>y)
{
x=i-dist+1;
y=i+dist-1;
}
kon+=dp[i];
}
fout<<kon;
return 0;
}