Cod sursa(job #249907)

Utilizator scvalexAlexandru Scvortov scvalex Data 29 ianuarie 2009 15:15:00
Problema Cutii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <stdio.h>
#include <stdlib.h>

typedef struct {
	int a, b, c;
} Cutie;

int N;
Cutie cs[3500];

int ccmp(const void *_x, const void *_y) {
	Cutie *x = (Cutie*)_x, *y = (Cutie*)_y;

	if ((x->a == y->a) && (x->b == y->b)) {
		return (x->c - y->c);
	} else if (x->a == y->a) {
		return (x->b - y->b);
	}
	return (x->a - y->a);
}

int fits(int i, int j) {
	return ((cs[i].a < cs[j].a) && (cs[i].b < cs[j].b) && (cs[i].c < cs[j].c));
}

void swap(int *x, int *y) {
	int aux = *x;
	*x = *y;
	*y = aux;
}

int main(int argc, char *argv[]) {
	int T, i;
	int m, c;

	FILE *fi = fopen("cutii.in", "r");
	fscanf(fi, "%d %d", &N, &T);
	FILE *fo = fopen("cutii.out", "w");
	while (T--) {
		for (i = 0; i < N; ++i) {
			fscanf(fi, "%d %d %d", &(cs[i].a), &(cs[i].b), &(cs[i].c));
			if (cs[i].a > cs[i].b)
				swap(&(cs[i].a), &(cs[i].b));
			if (cs[i].a > cs[i].c)
				swap(&(cs[i].a), &(cs[i].c));
			if (cs[i].b > cs[i].c)
				swap(&(cs[i].b), &(cs[i].c));
		}

		qsort(cs, N, sizeof(cs[0]), ccmp);

		m = 0;
		c = 1;
		for (i = 1; i < N; ++i)
			if (fits(i-1, i)) {
				/* printf("%d fits in %d\n", i-1, i); */
				++c;
			} else {
				/* printf("%d does not fit in %d\n", i-1, i); */
				if (c > m)
					m = c;
				c = 1;
			}
		if (c > m)
			m = c;

		/* for (i = 0; i < N; ++i)
			printf("%d %d %d\n", cs[i].a, cs[i].b, cs[i].c);
		printf("\n");
		printf("%d\n\n", m); */
		fprintf(fo, "%d\n", m);
	}
	fclose(fo);
	fclose(fi);

	return 0;
}