Cod sursa(job #2074292)

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