Pagini recente » Cod sursa (job #2337456) | Cod sursa (job #2439678) | Cod sursa (job #2354734) | Cod sursa (job #736829) | Cod sursa (job #1583398)
#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;
fin>>n>>v[1];
for ( int i= 2; i<=n; ++i ) {
fin>>v[i];
v[i-1]-= v[i];
}
n= n-1;
int sol= n;
for ( int i= 1, j= 1; i<=n; ++i ) {
if ( i<d[j]+j ) {
d[j]= 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;
}