Pagini recente » Cod sursa (job #278526) | Cod sursa (job #2148396) | Cod sursa (job #1560057) | Cod sursa (job #317918) | Cod sursa (job #28439)
Cod sursa(job #28439)
#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&&a.y>b.y&&a.z>b.z)
return 1;
return -1;
}
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>1)
{
int lm=(li+ls)/2;
if (comp(a,q[lm])>0)
insert(a,lm+1,ls);
else
insert(a,li,lm);
}
else
if ((li==nr-1&&comp(a,q[li])>0)||li==nr)
{
q[nr]=a;
nr++;
}
else
if (comp(a,q[li])>0)
q[ls]=a;
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;
}