Cod sursa(job #3360497)

Utilizator RegeleOu3433Calin V. Dragos Andrei RegeleOu3433 Data 14 iulie 2026 14:17:00
Problema Numarare triunghiuri Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#define MAXN 800
#define MAXLEN 30000

int lenb[MAXN] , vfl[MAXLEN + 1];
int main () {
    FILE *fin , *fout;
    int n , i , j , lb , stl , drl , mijl , nrtri;

    fin = fopen ( "nrtri.in" , "r" );
    fscanf ( fin , "%d" , &n );

    for ( i = 0 ; i < n ; i++ ) {
        fscanf ( fin , "%d" , &lb );
        vfl[lb]++;
    }
    fclose ( fin );

    n = 0;
    for ( i = 1 ; i <= MAXLEN ; i++ )
        for ( j = 0 ; j < vfl[i] ; j++ ) {
            lenb[n] = i;
            n++;
        }
    nrtri = 0;
    for ( i = 0 ; i < n ; i++ )
        for ( j = i + 1 ; j < n ; j++ ) {
            stl = -1;
            drl = n - 1;
            while ( drl - stl > 1 ) {
                mijl = stl + ( drl - stl ) / 2;
                if ( lenb[mijl] <= lenb[i] + lenb[j] )
                    stl = mijl;
                else
                    drl = mijl;
            }
            nrtri = nrtri + n - drl;
        }

    fout = fopen ( "nrtri.out" , "w" );
    fprintf ( fout , "%d\n" , nrtri / 3 );
    fclose ( fout );

    return 0;
}