Cod sursa(job #2064463)

Utilizator Andrei_RAndrei Roceanu Andrei_R Data 12 noiembrie 2017 13:27:38
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("nrtri.in");
ofstream g("nrtri.out");

int v[300000];

int main()
{
    int n, x, i, mx, j, nr = 0, grec;
    f >> n;
    for ( i = mx = 0; i < n; i++ ) {
        f >> x;
        v[x]++;
        if ( x > mx ) {
            mx = x;
        }
    }
    for ( n = 0; n <= mx; n++ ) {
        if ( v[n] > 0 ) {
            v[n]--;
            if ( n % 2 == 1)
                grec = n/2+1;
            else
                grec = n / 2;
            for ( i = n-1; i >= grec; i-- ) {
                v[i]--;
                for ( j = n-i; j <= i; j++ ) {
                    if ( v[i] > -1 && v[j] > 0 ) {
                        v[i]++;
                        v[n]++;
                        nr += v[i]* v[j] * v[n];
                        v[i]--;
                        v[n]--;
                    }
                }
                v[i]++;
            }
            v[n]++;
        }
    }
    g << nr;
    f.close();
    g.close();
    return 0;
}