Cod sursa(job #2068317)

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