Pagini recente » Cod sursa (job #2030837) | Cod sursa (job #1865877) | Cod sursa (job #472391) | Cod sursa (job #1290572) | Cod sursa (job #774687)
Cod sursa(job #774687)
# include <fstream>
# include <cstring>
# include <vector>
# define dim 3505
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
int n, t;
struct cutie
{
int X, Y, Z;
};
cutie a[ dim ];
int dm[ dim ], dp[ dim ];
inline bool cmp( cutie a, cutie b )
{
if ( a.X == b.X && a.Y == b.Y )
return a.Z < b.Z;
else
if ( a.X == b.X )
return a.Y < b.Y;
else
return a.X < b.X;
}
void afiseaza()
{
int i;
for ( i = 1 ; i <= n ; i++ )
g << a[ i ].X << " " << a[ i ].Y << " " << a[ i ].Z << "\n";
g << "\n";
}
void init()
{
int i;
for ( i = 1 ; i <= n ; i++ )
dp[ i ] = 0;
}
void rezolva()
{
int i, j, maxim, sol = 1;
dp[ n ] = 1;
for ( i = n - 1 ; i >= 1 ; i-- )
{
maxim = 0;
for ( j = i + 1 ; j <= n ; j ++ )
if ( a[ i ].X < a[ j ].X && a[ i ].Y < a[ j ].Y && a[ i ].Z < a[ j ].Z && maxim < dp[ j ] )
maxim = dp[ j ];
dp[ i ] = maxim + 1;
if ( sol < dp[ i ] )
sol = dp[ i ];
}
// for ( i = 1 ; i <= n ; i++ )
// g << dp[ i ] << " ";
// g << "\n";
g << sol << "\n";
}
void citire()
{
int i, j;
f >> n >> t;
for ( i = 1 ; i <= t ; i++ )
{
for ( j = 1 ; j <= n ; j++ )
f >> a[ j ].X >> a[ j ].Y >> a[ j ].Z;
sort( a + 1, a + n + 1, cmp );
rezolva();
init();
//afiseaza();
}
}
int main()
{
citire();
return 0;
}