Pagini recente » Cod sursa (job #1741576) | Cod sursa (job #3217088) | Cod sursa (job #3249181) | Cod sursa (job #2613889) | Cod sursa (job #2411552)
#include <fstream>
using namespace std;
ifstream cin ("numarare.in");
ofstream cout ("numarare.out");
int n;
long long sol;
int v[100005], dp[100005];
int main() {
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> v[i];
v[i] -= v[i - 1];
}
int l = 0, r = 0, lg;
sol = n;
for(int i = 1; i <= n; i++) {
if(i > r)
lg = 0;
else
lg = min(dp[l + r - i], r - i);
while(i + lg <= n && i > lg && v[i - lg] == v[i + lg])
lg++;
dp[i] = lg--;
if(i + lg > r) {
r = i + lg;
l = i - lg;
}
sol += lg / 2;
}
cout << sol;
return 0;
}