Cod sursa(job #596734)

Utilizator maritimCristian Lambru maritim Data 18 iunie 2011 18:09:40
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

#define MaxN 3510

typedef struct
{
	int x;
	int y;
	int z;
} xyz;

xyz A[MaxN];
int B[MaxN];
int N;
int T;
int MAX;

bool cmp(xyz a,xyz b)
{
	if(a.x == b.x && a.y == b.y)
		return a.z < b.z;
	if(a.x == b.x)
		return a.y < b.y;
	return a.x < b.x;
}

int main()
{
	FILE *f = fopen("cutii.in","r");
	FILE *g = fopen("cutii.out","w");
	
	fscanf(f,"%d %d ",&N,&T);
	for(int i=1;i<=T;i++)
	{
		for(int j=1;j<=N;j++)
			fscanf(f,"%d %d %d",&A[j].x,&A[j].y,&A[j].z);
		sort(A+1,A+N+1,cmp);
		MAX = 0;
		for(int k=1;k<=N;k++)
		{
			B[k] = 1;
			for(int l=k-1;l;l--)
				if(A[k].x > A[l].x && A[k].y > A[l].y && A[k].z > A[l].z)
					if(B[k] < B[l] + 1)
						B[k] = B[l] + 1;
			if(MAX < B[k])
				MAX = B[k];
		}
		fprintf(g,"%d\n",MAX);
	}
	
	fclose(g);
	fclose(f);
	return 0;
}