Cod sursa(job #28407)

Utilizator AlxCojocaru Alexandru Alx Data 7 martie 2007 19:52:00
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 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 comp(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],q[3501];
int n,t,nr,mx;
void insert(cutie a,int li,int ls)
{
 if (ls-li)
 {
  int lm=(li+ls)/2;
  if (comp(a,q[lm])>0)
   insert(a,lm+1,ls);
  else
   insert(a,li,lm);
 }
 else
  if (ls==nr&&comp(a,q[ls])>0)
  {
   q[nr]=a;
   nr++;
  }
  else
   q[li]=a;
}
int main()
{
 freopen("cutii.in","r",stdin);
 freopen("cutii.out","w",stdout);
 scanf("%d %d\n",&n,&t);
 int i;
 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);
  q[0]=c[0];
  nr=1;
  for (i=1;i<n;i++)
   insert(c[i],0,nr);
  printf("%d\n",nr);
 }
 return 0;
}