Cod sursa(job #746461)

Utilizator ms-ninjacristescu liviu ms-ninja Data 11 mai 2012 17:29:18
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>
using namespace std;
#define dim 3510

int best[dim],ciur[dim], n;
ifstream fin("cutii.in");
ofstream fout("cutii.out");

struct lista
{
	int x, y, z;
}v[dim];

int cmp(lista a,lista b)
{
	return a.x<b.x || (a.x==b.x && a.y<b.y) || (a.x==b.x && a.y==b.y && a.z<b.z);
};
 
int compare(int a,int b)
{
	if(a>b)
		return a;
	return b;
}

int solve()
{
	ciur[1]=best[1]=1;
	int	maxim, high=0;
	int i, j;
		for(i=2;i<=n;++i)
		{
			maxim=0;
			for(j=i-1;j>=1;--j)
			{
				if(v[j].x < v[i].x)
					if(v[j].y < v[i].y)
						if(v[j].z < v[i].z)
							maxim=compare(maxim, ciur[j]);
				if (best[j]<=maxim) 
					break; 
			}
		ciur[i]=maxim+1;
		best[i]=compare( best[i-1] , ciur[i] );
		high=compare (high,best[i]);
		
		}
		
		fout<<high <<'\n';
}


int main()
{
	int  t;
	fin>>n;
	fin>>t;
	
	for( ; t ;--t)
	{
			
		for(int i=1;i<=n;++i)
			fin>> v[i].x >>v[i].y >>v[i].z;
		sort(v+1,v+n+1,cmp);
		solve();
		
	}
	
	return 0;
}