Pagini recente » Cod sursa (job #1247757) | Cod sursa (job #703046) | Cod sursa (job #2233178) | Cod sursa (job #919564) | Cod sursa (job #735725)
Cod sursa(job #735725)
#include<fstream>
using namespace std;
ifstream f("numarare.in");
ofstream g("numarare.out");
void citeste(int &n, int v[])
{
int i;
f>>n;
for(i=1;i<=n;i++){f>>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];
g<<nr;
return 0;
}