Cod sursa(job #1978979)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 9 mai 2017 12:18:40
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, i, j, st, dr, a[810], nr, m, k;

int main ()
{

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

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

    sort(a+1, a+n+1);
    for (i=1; i<n-1; i++){
        for (j=i+1; j<n; j++){
            st=j+1; dr=n;
            k=st+(dr-st)/2;
            while (st<=dr){
                m=st+(dr-st)/2;
                if (a[m] <= a[i]+a[j]){
                    st = m+1;
                    k=m;
                }
                if (a[m] > a[i]+a[j]) dr = m-1;
            }
            if (st>dr && a[k]<=a[i]+a[j]) nr=nr+k-j;
//            printf("%d\n", nr);
        }
    }
    printf("%d", nr);
    return 0;
}