Cod sursa(job #381959)

Utilizator marius21Marius Petcu marius21 Data 12 ianuarie 2010 11:58:14
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

FILE* fin=fopen("cutii.in","r");
FILE* fout=fopen("cutii.out","w");

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

cutie a[3500];
int d[3500];

bool operator< (const cutie &a, const cutie &b)
{
	if (a.x!=b.x)
		return a.x<b.x;
	if (a.y!=b.y)
		return a.y<b.y;
	return a.z<b.z;
}

bool fitsin (const cutie &a, const cutie &b)
{
	return (a.x<b.x)&&(a.y<b.y)&&(a.z<b.z);
}

int main()
{
	int t,n;
	fscanf(fin,"%d %d",&n,&t);
	for (int k=0; k<t; k++)
	{
		for (int i=0; i<n; i++)
			fscanf(fin,"%d %d %d",&a[i].x,&a[i].y,&a[i].z);
		sort(a, a+n);
		int maxm=0;
		for (int i=n; i>=0; i--)
		{
			d[i]=1;
			for (int j=i+1; j<n; j++)
			{
				if (fitsin(a[i],a[j])&&(d[j]+1>d[i]))
					d[i]=d[j]+1;
			}
			if (d[i]>maxm)
				maxm=d[i];
		}
		fprintf(fout,"%d\n",maxm);
	}
	fclose(fin);
	fclose(fout);
	return 0;
}