Pagini recente » Cod sursa (job #572044) | Cod sursa (job #1353025) | Cod sursa (job #695938) | Cod sursa (job #633544) | Cod sursa (job #28414)
Cod sursa(job #28414)
#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
if (ls!=nr)
q[li+1]=a;
else
q[ls]=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;
}