Pagini recente » Cod sursa (job #1084566) | Cod sursa (job #1941771) | Cod sursa (job #1684458) | Cod sursa (job #1280090) | Cod sursa (job #1738793)
#include <fstream>
using namespace std;
ifstream fi("numarare.in");
ofstream fo("numarare.out");
#define M 100003
#define inf 1000000
int n, i,st,dr,a[M],lg[M];
long long sol;
int main()
{
fi>>n;
for (i = 1; i <= n; i++) fi>>a[i];
a[0]=a[n + 1] = -inf;
for (i = 1; i < n; i++)
{
if (i + 1 <= dr) lg[i] = min(lg[2 * st - i], dr - i);
while (a[i] + a[i + 1] == a[i + 1 + lg[i]] + a[i - lg[i]])
lg[i]++;
sol += 1LL * lg[i];
if (i + lg[i] >= dr)
{
st = i;
dr = i + lg[i];
}
}
fo<<sol<<'\n';
return 0;
}