Pagini recente » Cod sursa (job #1059648) | Cod sursa (job #1907672) | Cod sursa (job #1691721) | Cod sursa (job #2475083) | Cod sursa (job #2182584)
#include<bits/stdc++.h>
#define maxN 100005
using namespace std;
long long sol=0;
int v[maxN],w[maxN],n,l,r,k,odd[maxN];
int main()
{
freopen("numarare.in","r",stdin);
freopen("numarare.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
for(int i=1;i<n;i++)
w[i]=v[i+1]-v[i];
l=0;
r=-1;
for(int i=1;i<n;i++)
{
if(i>r) k=1;
else
k=min(odd[l+r-i],r-i);
while((i+k)<n && w[i-k]==w[i+k]) k++;
odd[i]=k;
k--;
if((i+k)>r)
{
r=i+k;
l=i-k;
}
sol=sol+1LL*odd[i];
}
printf("%lld\n",sol);
return 0;
}