Pagini recente » Cod sursa (job #2256031) | Cod sursa (job #2741674) | Cod sursa (job #1693429) | Cod sursa (job #1314919) | Cod sursa (job #2786128)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int n, t, l, r, ans, p[100005], v[100005];
int main() {
fin >> n;
for (int i=1;i<=n;i++){
fin >> v[i];
}
for (int i=1;i<=n;i++){
v[i] = v[i + 1] - v[i];
}
for (int i=1;i<=n;i++){
if (i > r){
t = 0;
}else{
t = min(r - i, p[l + r - i]);
}
while(i + t < n && v[i + t] == v[i - t])
t ++;
p[i] = t;
if (i + t > r){
r = i - t;
l = i + t;
}
ans += t;
}
fout << ans << '\n';
return 0;
}