Pagini recente » Cod sursa (job #1934366) | Cod sursa (job #1874108) | Cod sursa (job #1933957) | Cod sursa (job #2266628) | Cod sursa (job #1584263)
#include <fstream>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
const int nmax= 100000;
int v[nmax+1], d[nmax+1];
int main( ) {
int n, sol, i, j= 1;
fin>>n>>v[1];
for ( i= 2; i<=n; ++i ) {
fin>>v[i];
v[i-1]= v[i-1]-v[i];
}
sol= n= n-1;
for ( i= 1; i<=n; ++i ) {
if ( i<d[j]+j ) {
d[i]= min(d[j*2-i], d[j]+j-i);
}
if ( d[i]+i>=d[j]+j ) {
j= i;
for ( ; i-d[i]-1>=1 && i+d[i]+1<=n && v[i-d[i]-1]==v[i+d[i]+1]; ++d[i] ) ;
}
sol+= d[i];
}
fout<<sol<<"\n";
return 0;
}