Pagini recente » Cod sursa (job #2234324) | Cod sursa (job #749280) | Cod sursa (job #1852698) | Cod sursa (job #1543979) | Cod sursa (job #647674)
Cod sursa(job #647674)
#include<fstream>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
void citeste(int &n, int v[100001])
{
int i;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
if(i>1)
v[i-1]-=v[i];
}
}
int main()
{
int n,i,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+=L[i];
fout<<nr;
return 0;
}