Cod sursa(job #675527)

Utilizator octavianOctavian Crintea octavian Data 7 februarie 2012 18:15:42
Problema Numarare triunghiuri Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>

#define TRIANGLE(a, b, c)\
    (c) <= (a) + (b) ? 1 : 0

int cmp(const void *a,const void *b) {
   return *(const int *)a - *(const int *)b;
}

int main() {
    FILE *fin = fopen("nrtri.in", "r"), *fout = fopen("nrtri.out", "w");
    short N, *l, i, j, k;
    long No = 0;

    fscanf(fin, "%hd", &N);
    l = (short *) malloc(N * sizeof(short));
    for (i = 0; i < N; i++) {
        fscanf(fin, "%hd", &l[i]);
    }

    qsort(l, N, sizeof(short), cmp);

    for (i = 0; i < N - 2; i++) {
        for (j = i + 1; j < N - 1; j++) {
            for (k = j + 1; k < N; k++) {
                if (TRIANGLE(l[i], l[j], l[k])) {
                    No++;
                } else {
                    break;
                }
            }
        }
    }

    fprintf(fout, "%ld\n", No);

    free(l);

    fclose(fin);
    fclose(fout);

    return 0;
}