Cod sursa(job #715869)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 17 martie 2012 21:19:22
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#include<algorithm>
#define dim 3510

using namespace std;

ifstream f("cutii.in");
ofstream g("cutii.out");
int L[dim],n,t;
struct dm{
	int x,y,z;	
} v[dim];
struct cmp {
	inline bool operator ()(const dm &a,const dm &b){
		return a.z<b.z;
	}
};	
void solve(){
	for(int i=1;i<=n;i++)
		f>>v[i].x>>v[i].y>>v[i].z;
	
	sort(v+1,v+1+n,cmp());
	
	for(int i=1;i<=n;i++)
		L[i]=1;
	int maxu=1;
	for(int i=n-1;i>=1;i--){
		for(int j=i+1;j<=n;j++){
			
			if(L[j]+1>L[i] && v[j].x>v[i].x && v[j].y>v[i].y && v[j].z>v[i].z){
				
				L[i]=L[j]+1;
				if(maxu<L[i])
					maxu=L[i];
			}
			
		}
	}
	g<<maxu<<"\n";
}
int main (){
	f>>n>>t;
	for(;t;t--){
		for(int i=1;i<=n;i++)
			f>>v[i].x>>v[i].y>>v[i].z;
		sort(v+1,v+1+n,cmp());
		
		for(int i=1;i<=n;i++)
			L[i]=1;
		int maxu=1;
		for(int i=n-1;i>=1;i--){
			for(int j=i+1;j<=n;j++){
				
				if(L[j]+1>L[i] && v[j].x>v[i].x && v[j].y>v[i].y && v[j].z>v[i].z){
					
					L[i]=L[j]+1;
					if(maxu<L[i])
						maxu=L[i];
				}
				
			}
		}
		g<<maxu<<"\n";
	}
	return 0;
}