Pagini recente » Cod sursa (job #2953796) | Cod sursa (job #168217) | Cod sursa (job #3156569) | Cod sursa (job #3246853) | Cod sursa (job #810324)
Cod sursa(job #810324)
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 110000;
int n, x[N], s, p[N], f;
char a[11*N];
void calcp() {
int i, c, last = 0;
for(i = 1; i!=n; ++i) {
if(last > i)
p[i] = min(last - i - 1, p[c - (i - c)]);
for(; i - p[i] > 0 && i + p[i] + 1 <= n && x[i - p[i]] + x[i + p[i] + 1] == x[i] + x[i + 1]; ++p[i]);
if(p[i] + i + 1 > last)
last = p[i] + i + 1, c = i;
s += p[i];
}
}
int ter() {
int r = 0, s = 0;
if(a[f] == '-') {
s = 1;
++f;
}
while(a[f] >= '0' && a[f] <= '9')
r = r * 10 + a[f++] - '0';
++f;
return s ? -r : r;
}
int main() {
int i;
freopen("numarare.in", "r", stdin);
freopen("numarare.out", "w", stdout);
cin >> n;
cin.get();
cin.getline(a, 11*N);
for(i = 1; i<=n; ++i)
x[i] = ter();
calcp();
cout << s;
return 0;
}