Cod sursa(job #309743)

Utilizator Andrei200Andrei200 Andrei200 Data 1 mai 2009 00:04:20
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <cstdio>
#include <cstring>


#define Nmax 3510

#define file_in "cutii.in"
#define file_out "cutii.out"

int v[Nmax],t,n,x,y,z,lmax[Nmax],nr;

inline int cautbin(int p, int u, int x)   
{   
    int mij,i,j;   
    mij=(p+u)>>1;   
    while(p<=u)   
    {   
        if (lmax[mij]>=x && lmax[mij-1]<x)   
             return mij;   
        if (lmax[mij]<x)   
        {   
            p=mij+1;   
            mij=(p+u)>>1;   
        }   
        else  
        {   
            u=mij-1;   
            mij=(p+u)>>1;   
        }   
    }   
    return ++nr;   
}   

inline int solve()   
{   
    int i,j,l;   
    for (i=1;i<=n;++i)   
    {   
        l=cautbin(1,nr,v[i]);   
        lmax[l]=v[i];   
	}
	return nr;
}   


int main()
{
	int i,j;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n,&t);
	while(t--)
	{
		nr=0;
		memset(v,0,sizeof(v));
		memset(lmax,0,sizeof(lmax));
		for (i=1;i<=n;++i)
		{
			//printf("%d %d %d\n", x,y,z);
		    scanf("%d %d %d", &x,&y,&z);
			// printf("%d %d %d\n", x,y,z);
				 v[i]=x*y*z;
		}
			
		/*for (i=1;i<=n;++i)
              printf("%d ",v[i]);
		printf("\n");*/
		printf("%d\n", solve());
    }
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}