Pagini recente » Cod sursa (job #2224206) | Cod sursa (job #2059141) | Istoria paginii runda/usu5/clasament | Cod sursa (job #778083) | Cod sursa (job #1976532)
#include<cstdio>
#include<algorithm>
using namespace std;
FILE * fin = fopen("cutii.in","r");
FILE * fout = fopen("cutii.out","w");
int n, T, poz[3505], D[3505], sol;
struct cutie{
int X;
int Y;
int Z;
} v[3505];
inline bool cmp( int i, int j ){
if( v[i].X > v[j].X )
return false;
else{
if( v[i].X == v[j].X ){
if( v[i].Y > v[j].Y )
return false;
else{
if( v[i].Y == v[j].Y ){
if( v[i].Z > v[j].Z )
return false;
else
return true;
}else
return true;
}
}else
return true;
}
}
inline bool ok( int i, int j ){// j sa intre in i
if( v[j].X < v[i].X && v[j].Y < v[i].Y && v[j].Z < v[i].Z )
return true;
return false;
}
int main(){
fscanf( fin, "%d%d", &n, &T );
for( int t = 1; t <= T; t++ ){
for( int i = 1; i <= n; i++ ){
fscanf( fin, "%d%d%d", &v[i].X, &v[i].Y, &v[i].Z );
poz[i] = i;
}
sort( poz + 1, poz + n + 1, cmp );
sol = 0;
for( int i = 1; i <= n; i++ ){
D[i] = 1;
for( int j = 1; j < i; j++ ){
if( ok( poz[i], poz[j] ) == true && D[i] < D[j] + 1 )
D[i] = D[j] + 1;
}
sol = max( sol, D[i] );
}
fprintf( fout, "%d\n", sol );
}
return 0;
}