Cod sursa(job #514617)

Utilizator Gaby_mMititelu Gabriel Gaby_m Data 19 decembrie 2010 11:53:17
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

struct cutie{
	int x;
	int y;
	int z;
};

int compare (const void * x, const void * y)
{
  struct cutie *A = ( cutie *) x;
  struct cutie *B = ( cutie *) y;
 
  return A->x - B->x;
}

int N,T;
cutie v[3501];

int solve(){
	int length[3501];
	int i,j,max;	
	length[0] = 1;
	cutie aux1,aux2;
	
	for (i = 1; i < N; i++){		
		aux1 = v[i];
		length[i] = 1;
		for (j = i - 1; j >= 0; j--){
			aux2 = v[j];
			if (( aux1.x > aux2.x ) && ( aux1.y > aux2.y ) && ( aux1.z > aux2.z ) && ( length[j] + 1 > length[i] )){
				length[i] = length[j] + 1;
			}
		}		
	}
	
	max = 0;	
	for (i = 0; i < N; i++) {
		if (max < length[i]) max = length[i];
	}
	
	return max;	
}


void afisare() {
	int i;
	for (i = 0; i < N; i++) 
		printf("%d %d %d\n", v[i].x, v[i].y, v[i].z);
}

int main() {

	freopen("cutii.in","r",stdin);
	freopen("cutii.out","w",stdout);
	
	scanf("%d %d\n", &N, &T);
	
	int i,j;	
	
	for (i = 0; i < T; i++){		
		for (j = 0; j < N; j++) {
			scanf("%d %d %d\n", &v[j].x, &v[j].y, &v[j].z);						
		}		
		qsort(v, N, sizeof(cutie), compare);
		printf("%d\n",solve());
	}
	
	return 0;
}