Cod sursa(job #174782)

Utilizator stocarulCosmin-Mihai Tutunaru stocarul Data 9 aprilie 2008 11:32:35
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <fstream>
using namespace std;
fstream in,out;
int i,j,k;
int t,n;
int m,mt;
int x[3501];
long l;

struct cutie
  {
  int x,y,z;
  };
cutie v[3501];
void sorteaza(cutie v[],int n)
  {
  int i,j;
  cutie aux;
  for(i=1;i<=n;i++)
    for(j=i+1;j<=n;j++)
      if(v[i].x>v[j].x && v[i].y>v[j].y && v[i].z>v[j].z)
	{
	aux=v[i];
	v[i]=v[j];
	v[j]=aux;
	}
  }

void selectare(cutie a[],long p,long q,long &l)
{
int i,j,dj,di;
cutie aux;
i=p;
j=q;
di=1;
dj=0;
while(i<j)
	{
	if(a[i].x>a[j].x)
		{
		aux=a[i];
		a[i]=a[j];
		a[j]=aux;
		di=1-di;
		dj=1-dj;
		}
	  else
		if(a[i].x==a[j].x)
			if(a[i].y>a[j].y)
				{
				aux=a[i];
				a[i]=a[j];
				a[j]=aux;
				di=1-di;
				dj=1-dj;
				}
			  else
				if(a[i].y==a[j].y)
					if(a[i].z>a[j].z)
						{
						aux=a[i];
						a[i]=a[j];
						a[j]=aux;
						di=1-di;
						dj=1-dj;
						}
	i=i+di;
	j=j-dj;
	}
l=i;
}

void qsort(cutie a[],long p,long q)
{
//int l;
if(p<q)
	{
	selectare(a,p,q,l);
	qsort(a,p,l-1);
	qsort(a,l+1,q);
	}
}


int main()
{
in.open("cutii.in",ios::in);
out.open("cutii.out",ios::out);
in>>n>>t;
for(k=1;k<=t;k++)
  {
  mt=0;
  for(i=1;i<=n;i++)
    {
    x[i]=0;
    in>>v[i].x>>v[i].y>>v[i].z;
    }
  qsort(v,n);
  for(i=1;i<=n;i++)
    {
    m=0;
    for(j=1;j<i;j++)
      if(x[j]>m && v[i].x>v[j].x && v[i].y>v[j].y && v[i].z>v[j].z)
	m=x[j];
    x[i]=m+1;
    if(mt<m+1) mt=m+1;
    }
  out<<mt<<endl;
  }
in.close();
out.close();
return 0;
}