Pagini recente » Cod sursa (job #869617) | Cod sursa (job #279986) | Cod sursa (job #720884) | Cod sursa (job #3211482) | Cod sursa (job #45148)
Cod sursa(job #45148)
// Problema cutii
#include <stdio.h>
#define MAX 3501
int d[MAX][3];
int pozitie( int st, int dr )
{
long piv = d[st][0]*d[st][1]*d[st][2];
int L,l,h;
int i=st-1, j = dr+1;
do{
do{ i++; }while( d[i][0]*d[i][1]*d[i][2] < piv );
do{ j--; }while( d[j][0]*d[j][1]*d[j][2] > piv );
if( i < j )
{
L = d[i][0]; l = d[i][1]; h = d[i][2];
d[i][0] = d[j][0];
d[i][1] = d[j][1];
d[i][2] = d[j][2];
d[j][0] = L; d[j][1] = l; d[j][2] = h;
}
}while( i < j );
return j;
}
int qs( int st, int dr )
{
if( st == dr ) return 0;
int m = pozitie( st, dr );
qs( st, m );
qs( m+1, dr );
return 0;
}
int main()
{
int n, t, i, j, max;
freopen( "cutii.in", "rt", stdin );
scanf( "%d %d", &n, &t );
freopen( "cutii.out", "wt", stdout );
while( t )
{
t--;
for( i=1; i<=n; i++ )
scanf( "%d %d %d", &d[i][0], &d[i][1], &d[i][2] );
qs( 1, n );
max = 1;
j =1;
for( i=1; i<n; i++ )
if( ( d[i][0] < d[i+1][0] ) && ( d[i][1] < d[i+1][1] ) && ( d[i][2] < d[i+1][2] ) )
{
j++;
if( j > max ) max = j;
}
else j=1;
printf( "%d\n", max );
}
fclose( stdin );
fclose( stdout );
return 0;
}