Cod sursa(job #1473505)

Utilizator atatomirTatomir Alex atatomir Data 19 august 2015 15:35:14
Problema Medie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

#define mp make_pair
#define pb push_back

#define maxN 9011

int n,i,j,a,b,c;
int v[maxN];
int cnt[maxN];
long long ans,aux;

int main()
{
    freopen("medie.in","r",stdin);
    freopen("medie.out","w",stdout);

    scanf("%d",&n);
    for (i = 1; i <= n; i++){
        scanf("%d",&c); v[i] = c;
        for (j = 1; j <= i-1; j++) {
            b = v[j];

            cnt[b]--;

            //! a+b == 2*c
            a = 2*c-b;
            if(a >= 0) ans += cnt[a];

            //! b+c == 2*a
            a = b+c;
            if (a % 2 == 0) {
                a >>= 1;
                aux += cnt[a];
            }

            cnt[b]++;
        }

        cnt[c]++;
    }

    printf("%lld",ans + (aux/2) );

    return 0;
}