Cod sursa(job #35243)

Utilizator amadaeusLucian Boca amadaeus Data 21 martie 2007 22:24:09
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

struct ent {
	int x, y, z;
};

struct cmp {
	bool operator() ( ent a, ent b ) {
		return a.z < b.z;
	}
};

#define NX 3501

ent v[ NX ];
int c[ NX ];

inline
void umax( int& x, int y ) {
	if( x < y )
		x = y;
}

inline
bool intra( int a, int b ) {
	return ( v[a].x < v[b].x && v[a].y < v[b].y );
}

void cit() {
	int i, k, vmax, tmax, N, T;
	
	scanf( "%d%d", &N, &T );
	
	for( ; T; T-- ) {
		for( i = 0; i < N; i++ )
			scanf( "%d%d%d", &v[i].x, &v[i].y, &v[i].z );

		sort( v, v + N, cmp() );
		c[0] = 1; tmax = 1;
		for( i = 1; i <= N; i++ ) {
			vmax = 1;
			for( k = 1; i - k >= 0 ; k++ )
				if( intra( i-k, i ) )
					umax( vmax, c[i-k] + 1 );
			c[i] = vmax;
			umax( tmax, vmax );
		}

		printf( "%d\n", tmax );
	}
}
			
int main() {
	freopen( "cutii.in", "r", stdin );
	freopen( "cutii.out", "w", stdout );

	cit();

	return 0;
}