Pagini recente » Cod sursa (job #1138721) | Cod sursa (job #1621780) | Cod sursa (job #1640322) | Cod sursa (job #1379158) | Cod sursa (job #2360925)
#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 += (m[i]);
}
out << ans;
return 0;
}