Cod sursa(job #450890)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 8 mai 2010 15:47:11
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int max(int a, int b)
{
	return (a>b)?a:b;
}

struct ctie
{
	int a,b,c;
};

const int N = 3501;

int n;
ctie cutie[N];
int lung[N];

void citire()
{
	for (int i = 1; i <= n; ++i)
		scanf("%d%d%d",&cutie[i].a,&cutie[i].b,&cutie[i].c);
}

bool ordine_buna_sortare (ctie x, ctie y)
{
	if (x.a < y.a)
		return true;
	return false;
}

bool montabil (ctie x, ctie y)
{
	return (x.b < y.b)&&(x.c < y.c);
}

int raspuns()
{
	int max_lung=0;
	for (int i = 1; i <= n; ++i)
	{
		lung[i] = 0;
		for (int j = 1; j <= i; ++j)
			if (montabil(cutie[j], cutie[i]) && (lung[j] > lung[i]))
				lung[i] = lung[j];
		++lung[i];   // Adaug cutia noua.
		max_lung = max(max_lung,lung[i]);
	}
	return max_lung;
}

int main()
{
	int t;
	freopen("cutii.in","r",stdin);
	freopen("cutii.out","w",stdout);
	scanf("%d%d",&n,&t);
	for (int i = 1; i <= t; ++i)
	{
		citire();
		sort(cutie+1,cutie+n+1,ordine_buna_sortare);//sortare ca sa fiu sigur ca cutiile la care atasez au lung-ul deja calculat
		printf("%d\n",raspuns());
	}
	return 0;
}