Pagini recente » Cod sursa (job #991857) | Cod sursa (job #1444832) | Cod sursa (job #2102882) | Cod sursa (job #1580259) | Cod sursa (job #2030101)
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("numarare.in");
ofstream so("numarare.out");
int v[100005],x[100005];
int main()
{
int n;
si>>n;
si>>v[1];
for(int i=2;i<=n;++i)
{
si>>v[i];
v[i-1]=v[i-1]-v[i];
}
int nr,p;
n--;
nr=n;
p=1;
for(int i=1;i<=n;i++)
{
if(i<p+x[p])
x[i]=min(x[2*p-i],p+x[p]-i);
if(i+x[i]>=p+x[p])
{
p=i;
while(i-x[i]-1>=1&&i+x[i]+1<=n&&v[i-x[i]-1]==v[i+x[i]+1])
x[i]++;
}
}
for(int i=1;i<=n;i++)
nr=nr+x[i];
so<<nr;
return 0;
}