Cod sursa(job #28298)

Utilizator AlxCojocaru Alexandru Alx Data 7 martie 2007 18:12:37
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct cutie
{
 int x,y,z;
};
int csort(cutie* a,cutie* b)
{
 if (a->x>b->x)
  return 1;
 if (a->x<b->x)
  return -1;
 if (a->y>b->y)
  return 1;
 if (a->y<b->y)
  return -1;
 if (a->z>b->z)
  return 1;
 if (a->z<b->z)
  return -1;
 return 0;
}
int sort(const void *a,const void *b)
{
 return csort((cutie*)a,(cutie*) b);
}
cutie c[3501];
int n,t,nr[3501],mx;
int main()
{
 freopen("cutii.in","r",stdin);
 freopen("cutii.out","w",stdout);
 scanf("%d %d\n",&n,&t);
 int i,j;
 for (int k=0;k<t;k++)
 {
  for (i=0;i<n;i++)
   scanf("%d %d %d\n",&c[i].x,&c[i].y,&c[i].z);
  qsort((void*)c,n,sizeof(c[0]),sort);
  memset(nr,0,sizeof(nr));
  nr[0]=1;
  mx=1;
  for (i=1;i<n;i++)
  {
   nr[i]=1;
   for (j=0;j<i;j++)
    if (c[i].x>c[j].x&&c[i].y>c[j].y&&c[i].z>c[j].z&&nr[i]<nr[j]+1)
     nr[i]=nr[j]+1;
   if (mx<nr[i])
    mx=nr[i];
  }
  printf("%d\n",mx);
 }
 return 0;
}