Cod sursa(job #2759819)

Utilizator MarcGrecMarc Grec MarcGrec Data 20 iunie 2021 19:20:13
Problema Medie Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#define MAX_V 7000
#define MIN_V 1
#define MIN(a, b) (((a) < (b)) ? (a) : (b))

#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("medie.in");
ofstream fout("medie.out");

int F[MAX_V + 1];

int main()
{
    int n;
    fin >> n;
    
    for (int i = 1; i <= n; ++i)
    {
        int x;
        fin >> x;
        
        ++F[x];
    }
    
    int res = 0;
    
    for (int i = MIN_V; i <= MAX_V; ++i)
    {
        res += (F[i] * (F[i] - 1) * (F[i] - 2)) / 2;
        
        for (int d = 1; ((i - d) >= MIN_V) && ((i + d) <= MAX_V); ++d)
        {
            const int mina = MIN(F[i], F[i - d]), minb = MIN(F[i], F[i + d]);
            
            res += MIN(mina, minb);
        }
    }
    
    fout << res;
    
    fin.close();
    fout.close();
    return 0;
}