Cod sursa(job #2067496)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 16 noiembrie 2017 15:29:44
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

int v[801],n;
int i,j,k=0,pas,r,l=10;

int fcautbin(int x) {
    int r=0;
    int pas = 1<<l;
    while(pas!=0) {
        if(r+pas<=n && v[r+pas]<=x) {
            r+=pas;
        }
        pas/=2;
    }
    return r;
}

int main() {
    FILE *fin, *fout;
    fin=fopen("nrtri.in", "r");
    fout=fopen("nrtri.out", "w");

    fscanf(fin, "%d", &n);

    for(i=1;i<=n;i++) {
        fscanf(fin, "%d", &v[i]);
    }
    sort(v+1,v+n+1);

    for(i=1;i<n;i++){
        for(j=i+1;j<=n;j++){
            r = fcautbin(v[i]+v[j]);
            k+=r-j;
        }
    }

    fprintf(fout, "%d\n", k);

    return 0;
}