Cod sursa(job #711356)

Utilizator noruIlies Norbert noru Data 11 martie 2012 23:08:37
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");

int n,l[3501],poz[3501],v[3501],i,j,cutii[4][3501];

void citire()
{
	for (i=1;i<=n;i++)
		f>>cutii[1][i]>>cutii[2][i]>>cutii[3][i];
}

void intersc(int &a, int &b)
{
	int aux; aux=a;a=b;b=aux;
}

void bubble()
{
	int ok;
	do
	{
		ok=1;
		for (i=1;i<=n-1;i++)
		{
			if (cutii[3][i]>cutii[3][i+1])
			{
				ok=0;
				intersc(cutii[1][i],cutii[1][i+1]);
				intersc(cutii[2][i],cutii[2][i+1]);
				intersc(cutii[3][i],cutii[3][i+1]);
			}
		}
	}
	while (ok==0);
}
//scm
void scm()
{
	int max,p;
	for (i=1;i<=n;i++) l[i]=1;
	for (i=n-1;i>=1;i--)
	{
		max=p=0;
		for (j=i+1;j<=n;j++)
			if (cutii[1][i]<cutii[1][j]&&l[j]>max&&cutii[3][i]<cutii[3][j]&&cutii[2][i]<cutii[2][j])
			{
				max=l[j];
				p=j;
			}
		poz[i]=p;
		l[i]=max+1;
	}
	max=0;
	for (i=1;i<=n;i++) if (l[i]>max) max=l[i];
	g<<max<<'\n';
}

int main()
{
	int t,l;
	f>>n>>t;
	for (l=1;l<=t;l++)
	{
		citire();
		bubble();
		scm();
	}
	return 0;
}