Pagini recente » Cod sursa (job #2621326) | Cod sursa (job #1555763) | Cod sursa (job #144000) | Cod sursa (job #2437208) | Cod sursa (job #2360926)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cmath>
using namespace std;
ifstream in("numarare.in");
ofstream out("numarare.out");
int main() {
int n;
in >> n;
vector<int> v(n + 1, 0);
for(int i = 1; i <= n; i ++)
in >> v[i];
int center = 1, r = 0;
vector<int> m(n + 1, 0);
long long ans = 0;
for(int i = 2; i <= n; i ++) {
if(i < r)
m[i] = min(m[center - (i - center)], n - i + 1);
while(i + m[i] <= n && i > m[i] + 1 && v[i + m[i]] + v[i - m[i] - 1] == v[i + m[i] - 1] + v[i - m[i]])
m[i] ++;
if(i + m[i] - 1 > r) {
r = i + m[i] - 1;
center = i;
}
ans += 1LL * m[i];
}
out << ans;
return 0;
}