Pagini recente » Cod sursa (job #1549079) | Cod sursa (job #149760) | Cod sursa (job #188250) | Cod sursa (job #1189244) | Cod sursa (job #996721)
Cod sursa(job #996721)
#include <fstream>
using namespace std;
ifstream fin ("numarare.in");
ofstream fout ("numarare.out");
int n,i,p,sum,v[100001],a[100001];
int main () {
fin>>n>>v[1];
for (i=2;i<=n;i++) {
fin>>v[i];
v[i-1]-=v[i];
}
sum=n-1; p=1;
for (i=1;i<n;i++) {
if (i<p+a[p]) {
if (a[2*p-i]<=p+a[p]-i)
a[i]=a[2*p-i];
else
a[i]=p+a[p]-i;
}
if (i+a[i]>=p+a[p]) {
p=i;
while ((i-a[i]-1>=1)&&(i+a[i]+1<=n)&&(v[i-a[i]-1]==v[i+a[i]+1]))
a[i]++;
}
}
for (i=1;i<n;i++)
sum+=a[i];
fout<<sum<<"\n";
return 0;
}