Cod sursa(job #1402023)

Utilizator ArmandNMArmand Nicolicioiu ArmandNM Data 26 martie 2015 11:48:59
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <algorithm>

const int NMAX = 850;

using namespace std;

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

int N,answer;
int v[NMAX];

int bs(int l, int r, int value)
{
    int step,j;
    for (step = 1; step <= N; step<<=1);

    for (j = l-1; step; step>>=1)
    {
        if (j + step <= r && v[j+step] <= value)
            j += step;
    }

    return j;
}

int main()
{
    f >> N;
    for (int i = 1; i <= N; ++i)
    {
        f >> v[i];
    }

    sort(v+1,v+N+1);

    for (int i = 1; i <= N; ++i)
    {
        for (int j = i+1; j <= N; ++j)
        {
            answer += (bs(j+1,N,v[i]+v[j]) - j);
        }
    }

    g << answer;

    f.close();
    g.close();
    return 0;
}