Cod sursa(job #1521906)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 10 noiembrie 2015 22:46:52
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[810], dif[60010];
int n, total;

fstream f("nrtri.in", ios::in);
fstream g("nrtri.out", ios::out);

int abs(int x)
{
    if(x >= 0)
        return x;
    return -x;
}

void citire()
{
    f>>n;

    for(int i = 0; i < n; ++i)
    {
        f>>v[i];
    }
}

void diferente()
{
    for(int i = 0; i < n - 1; ++i)
        for(int j = i + 1; j < n; ++j)
        {
            ++dif[abs(v[i] - v[j])];
            --dif[v[i] + v[j] + 1];
            total = total - (2*v[i] >= v[j]) - (2*v[j] >= v[i]);
        }

    for(int i = 1; i <= 30000; ++i)
        dif[i] += dif[i - 1];
}

void solve()
{
    for(int i = 0; i < n; ++i)
        total+= dif[v[i]];
    g<<total/3;
}

int main()
{
    citire();
    diferente();
    solve();

    return 0;
}