Cod sursa(job #7883)

Utilizator IgnitionMihai Moraru Ignition Data 22 ianuarie 2007 21:12:47
Problema Cutii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MN (3509)

typedef int cmp_mask(const void *, const void *);
int c_cmp(short c1[3], short c2[3])
{
	return c1[0] < c2[0]? -1 : c1[0] > c2[0]? 1 : c1[1] < c2[1]? -1 : c1[1] > c2[1]? 1 : c1[2]-c2[2];
}

int fits(short c1[3], short c2[3])
{
	return (c1[0] < c2[0] && c1[1] < c2[1] && c1[2] < c2[2]);
}

short n[MN][3], c[MN];

int main()
{
	freopen("cutii.in", "r", stdin);
	freopen("cutii.out", "w", stdout);

	int N, T;
	int i, j;

	for(scanf("%d %d", &N, &T); T --; ) {
		for(i = 0; i < N; ++ i)
			scanf("%d %d %d", &n[i][0], &n[i][1], &n[i][2]);
		qsort(n, N, sizeof(n[0]), (cmp_mask*)c_cmp);
		for(c[0] = i = 1; i < N; ++ i) for(c[i] = 1, j = 0; j < i; ++ j) if(fits(n[j], n[i]) && c[j]+1 > c[i])
			c[i] = c[j]+1;
		printf("%d\n", c[N-1]);
	}

	return 0;
}