Pagini recente » Cod sursa (job #925847) | Cod sursa (job #1055667) | Cod sursa (job #1498648) | Cod sursa (job #2392204) | Cod sursa (job #466619)
Cod sursa(job #466619)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define dim 8192
using namespace std;
char ax[dim];
int pz;
inline void cit (int &x)
{
x = 0;
int neg = 0;
while ((ax[pz] < '0' || ax[pz] > '9') && ax[pz] != '-')
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
if (ax[pz] == '-')
{
neg = 1;
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
}
while (ax[pz] >= '0' && ax[pz] <= '9')
{
x = x * 10 + ax[pz] - '0';
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
}
if (neg)
x = -x;
}
int a[100001];
int n;
void solve ()
{
int i, j, k;
int s =0;
long long sol = 0;
for (i = 1; i < n; ++i)
{
s = a[i] + a[i + 1];
for (j = i - 1, k = i + 2; j >= 1 && k <= n; --j, ++k)
if (a[j] + a[k] != s)
break;
sol += i - j;
}
printf ("%lld\n", sol);
}
void brut ()
{
long long sol = 0;
int i, j, k;
for (i = 1; i < n; ++i)
for (j = i + 1; j <= n; ++j)
if ((j - i) % 2 == 1)
{
}
}
void doit ()
{
long long sol = 0;
int i, j;
int v;
for (i = 1; i < n; ++i)
{
v = min (i, n - (i + 1) + 1);
sol += (long long) v;
}
printf ("%lld\n", sol);
}
int main ()
{
freopen ("numarare.in", "r", stdin);
freopen ("numarare.out", "w", stdout);
cit (n);
int i;
for (i = 1; i <= n; ++i)
cit (a[i]);
int ok = 1;
for (i = 2; i <= n; ++i)
if (a[i] != a[i - 1] + 1)
{
ok = 0;
break;
}
if (ok)
doit ();
else
solve ();
return 0;
}