Cod sursa(job #2074315)

Utilizator ParketPatrick Josephs Parket Data 24 noiembrie 2017 14:18:51
Problema Numarare triunghiuri Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <stdlib.h>
#define L 9
int v[801];
int main()
{
    int n;
    int i,j,k,pas;
    int nrtri = 0;
    FILE *f1 = fopen("nrtri.in","r"), *f2 = fopen("nrtri.out","w");
    fscanf(f1,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f1,"%d",&v[i]);
    nrtri=0;
    int aux,f=0;
    while(f==0){
        f=1;
        for(i=1;i<n;i++){
            if(v[i]>v[i+1]){
                aux=v[i];
                v[i]=v[i+1];
                v[i+1]=aux;
                f=0;
            }
        }
    }
    for(i=1;i<=n-2;i++)
        for(j=i+1;j<=n-1;j++){
            k=1;
            pas=1<<L;
            while(pas!=0){
                if(k+pas<=n && v[i]+v[j]>=v[k+pas])
                    k+=pas;
                pas>>=1;
            }
            if(k > j && v[i]+v[j] >= v[k])
                nrtri+=k-j;
        }
    fprintf(f2,"%d",nrtri);
    return 0;
}