Cod sursa(job #361840)

Utilizator MKLOLDragos Ristache MKLOL Data 6 noiembrie 2009 20:39:04
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include<stdio.h>




struct cutii{
int x,y,z;} v[3600];
int best[3600],N,T,maxfin,max;
void qsort(int lf,int rh)
{
    int st=lf,aux,dr=rh,piv=v[(st+dr)/2].x;
    while(st<=dr)
    {
        while(v[st].x<piv)
        ++st;
        while(v[dr].x>piv)
        --dr;
        if(st<=dr)
        {
            aux=v[st].x;
            v[st].x=v[dr].x;
            v[dr].x=aux;

            aux=v[st].y;
            v[st].y=v[dr].y;
            v[dr].y=aux;

            aux=v[st].z;
            v[st].z=v[dr].z;
            v[dr].z=aux;
        ++st;
        --dr;
        }
    }
    if(lf<dr)
    qsort(lf,dr);
    if(st<rh)
    qsort(st,rh);

}


int main()
{
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);


scanf("%d %d",&N,&T);
++T;
    while(--T)
    {
        for(int i=1;i<=N;++i)
        {
            scanf("%d %d %d",&v[i].x,&v[i].y,&v[i].z);
        }
            qsort(1,N);
            for(int i=1;i<=N;++i)
            {
            max=0;
                for(int j=i;j>=1;--j)
                {
                    if(v[i].x>v[j].x&&v[i].y>v[j].y&&v[i].z>v[j].z)
                    {
                        if(best[j]>max)
                        max=best[j];
                    }
                }
            best[i]=max+1;
            }
            for(int i=1;i<=N;++i)
                if(best[i]>maxfin)
                    maxfin=best[i];

            printf("%d\n",maxfin);
            maxfin=0;

    }

}