Cod sursa(job #175369)

Utilizator stocarulCosmin-Mihai Tutunaru stocarul Data 9 aprilie 2008 21:14:27
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 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 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) || (a[i].x==a[j].x && (a[i].y>a[j].y || (a[i].y==a[j].y && 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)
{
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,1,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;
}