Pagini recente » Cod sursa (job #1974492) | Cod sursa (job #1333749) | Cod sursa (job #1371648) | Cod sursa (job #1447751) | Cod sursa (job #2272176)
#include<fstream>
using namespace std;
ifstream fi("numarare.in");
ofstream fo("numarare.out");
int n,x,i,y,A[100005],poz,sf,Lp[100005],j;
long long rez;
int main()
{
fi>>n;
fi>>x;
for(i=2; i<=n; i++)
{
fi>>y;
A[i-1]=y-x;
x=y;
}
n--;
poz=0;
sf=0;
for(i=1; i<=n; i++)
{
if(i>sf)
{
for(j=1; j<=min(i-1,n-i); j++)
if(A[i-j]!=A[i+j])
break;
Lp[i]=j;
poz=i;
sf=i+j-1;
}
else
{
if((poz-(i-poz))-Lp[poz-(i-poz)]+1>poz-Lp[poz]+1)
Lp[i]=Lp[poz-(i-poz)];
else
{
for(j=sf-i+1; j<=min(i-1,n-i); j++)
if(A[i-j]!=A[i+j])
break;
Lp[i]=j;
poz=i;
sf=i+j-1;
}
}
rez+=(1LL*Lp[i]);
}
fo<<rez<<"\n";
fi.close();
fo.close();
return 0;
}