Cod sursa(job #2075127)

Utilizator ana.pintiliciucAna Maria Pintiliciuc ana.pintiliciuc Data 25 noiembrie 2017 11:27:30
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, a[805], nr, lg;

int cautbin(int lg,int s, int poz)
{
    int i;
    for(i=poz;lg;lg>>=1)
        if(i + lg <= n && a[i + lg] <= s)
            i+=lg;
    return i;
}

int num()
{
    sort(a+1, a+n+1);
    int lg=1;
    for(lg=1;lg<=n; lg<<=1);
    for(int i=1;i<n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            int s=a[i]+a[j];
            int poz=cautbin(lg, s, j);
            nr+=poz-j;
        }
    }
    return nr;
}

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

    scanf("%d", &n);
    for(int i=1;i<=n;i++)
        scanf("%d", &a[i]);
    printf("%d", num());

    return 0;
}