Pagini recente » Cod sursa (job #74714) | Cod sursa (job #446728) | Cod sursa (job #1951631) | Cod sursa (job #201823) | Cod sursa (job #17977)
Cod sursa(job #17977)
#include<stdio.h>
#define maxN 3500
int N,T,x[maxN],y[maxN],z[maxN],l[maxN];
void interclaseaza(int p, int q)
{int m=(p+q)/2 ;
int i,j,k,a1[maxN],a2[maxN],a3[maxN];
i=p; j=m+1; k=0;
while (i<=m && j<=q)
{if (z[i]<=z[j]) {a1[++k]=x[i];
a2[k]=y[i];
a3[k]=z[i];
i++;}
else {a1[++k]=x[j];
a2[k]=y[j];
a3[k]=z[j];
j++;}
}
while (i<=m) {a1[++k]=x[i];
a2[k]=y[i];
a3[k]=z[i];
i++;}
while (j<=q){a1[++k]=x[j];
a2[k]=y[j];
a3[k]=z[j];
j++;}
for(i=p,k=1;i<=q;i++,k++)
{x[i]=a1[k];
y[i]=a2[k];
z[i]=a3[k];
}
}
void sort(int p, int q)
{if(p!=q){sort(p,(p+q)/2);
sort((q+p)/2+1, q);
interclaseaza(p,q);
}
}
int main ()
{freopen ("cutii.in","r",stdin);
int j,i,max,k1,k2;
scanf("%d %d\n",&N,&T);
freopen("cutii.out","w",stdout);
for (i=1;i<=T;i++)
{for(j=1;j<=N;j++) scanf("%d %d %d\n",&x[j],&y[j],&z[j]);
sort(1,N);
l[N]=1;
for(k1=N+1;k1>=1;k1--)
{max=0;
for(k2=k1+1;k2<=N;k2++) if(x[k2]>x[k1] && y[k2]>y[k1] && max<l[k2]) max=l[k2];
l[k1]=max+1;
}
printf("%d\n",l[1]);
}
return 0;}