Cod sursa(job #539201)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 22 februarie 2011 16:53:43
Problema Cutii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb

#include <cstdio>
#include <fstream>
#include <algorithm>

using namespace std;

#define nn 3501

struct cutii {
	int a,b,c;
	};
	
	cutii v[nn];
	int f[nn];
	int n,t;
	
 bool compara (cutii x,cutii y){
		if(x.a<y.a) return 1;
		if(x.a==y.a&&x.b<y.b) return 1;
		if(x.a==y.a&&x.b==y.b&&x.c<y.c) return 1;
		return 0;}
	
	int solve (){
		
		int s=0;
		for(int i=2;i<=n;++i){
			f[i]=0;
			for(int j=i-1;j;--j)
			if(f[j]+1>f[i] && v[i].a>v[j].a && v[i].b>v[j].b && v[i].c>v[j].c){
				f[i]=f[j]+1;
				if(f[i]>s-1)
				s=f[i]+1;
				}
			}
		
		return s;}
	
	int main ()
	{
		
		ifstream in ("cutii.in");
		freopen ("cutii.out","w",stdout);
		for(in>>n>>t;t;--t){
			for(int i=1;i<=n;++i)
			in>>v[i].a>>v[i].b>>v[i].c;
			sort(v+1,v+n+1,compara);
			printf("%d\n",solve ());
			}
		in.close ();
		
		return 0;}