Pagini recente » Cod sursa (job #2955909) | Cod sursa (job #3159167) | Cod sursa (job #971950) | Cod sursa (job #1611373) | Cod sursa (job #675626)
Cod sursa(job #675626)
#include <stdio.h>
#include <stdlib.h>
/*
* Celelalte inegalitati, (a) <= (b) + (c) si (b) <= (a) + (c), sunt
* respectate deoarece a <= b <= c
*/
#define TRIANGLE(a, b, c)\
(c) <= (a) + (b) ? 1 : 0
int cmp(const void *a, const void *b) {
return *(const short *)a - *(const short *)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;
}