Pagini recente » Cod sursa (job #2387070) | Cod sursa (job #254232) | Cod sursa (job #2982264) | Cod sursa (job #3139596) | Cod sursa (job #640735)
Cod sursa(job #640735)
#include<fstream>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
void citeste(int &n, int v[])
{
int i;
fin>>n;
for(i=1;i<=n;i++){fin>>v[i];
if(i>1)v[i-1]=v[i-1]-v[i];
}
}
int main()
{
int n,i,j,v[100001],L[100001],nr,p;
citeste(n,v);
n--; nr=n; p=1 ;
for(i=1;i<=n;i++)
{
if (i<p+L[p])
L[i]=min(L[2*p-i],p+L[p]-i);
if (i+L[i]>=p+L[p])
{
p=i;
while(i-L[i]-1>=1 && i+L[i]+1<=n && v[i-L[i]-1]==v[i+L[i]+1])
L[i]++;
}
}
for(i=1;i<=n;i++)
nr=nr+L[i];
fout<<nr;
return 0;
}