Pagini recente » Cod sursa (job #2011466) | Cod sursa (job #1293547) | Istoria paginii utilizator/dianaschneider | Cod sursa (job #1539671) | Cod sursa (job #2452129)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("numarare.in");
ofstream out("numarare.out");
const int dim = 100005;
int n,v[dim],h[2*dim+1],len[2*dim+1];
long long int ans = 0;
void Rezolva()
{
int c = 0,r = 0;
for (int i=1; i<=n; i+=2)
{
if (i > r)
{
c = i;
r = i;
}
else
{
len[i] = min(r-i, len[2*c-i]);
}
/* if (len[i] == 0)
{
len[i] = 1;
}*/
while (v[i - len[i] - 1] + v[i + len[i] + 1] == v[i-1] + v[i+1])
{
len[i] += 1;
}
ans += (long long int)((len[i] + 1)/2);
if (i+len[i] > r)
{
r = i+len[i];
c = i;
}
}
}
int main()
{
in >> n;
n = 2*n-1;
for (int i=1; i<=n; i+=2)
{
in >> v[i];
}
Rezolva();
out << ans;
return 0;
}