Pagini recente » Cod sursa (job #2395184) | Cod sursa (job #1637721) | Cod sursa (job #1448117) | Cod sursa (job #221995) | Cod sursa (job #2938357)
//#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
//dp[i] = nr. max. de cutii ce pot fi alese cu cutia i fiind ultima
//dp[i] = 1 + max(dp[j]), cu dimensiunile cutii lui j mai mari ca ale lui i
int dp[3504];
struct cub
{
int x, y, z;
} v[3504];
bool operator <(cub a, cub b) //a < b <=>
{
return b.x > a.x and b.y > a.y and b.z > a.z;
}
bool cmp(cub a, cub b)
{
if (a.x != b.x)
return a.x > b.x;
if (a.y != b.y)
return a.y > b.y;
return a.z > b.z;
}
int main()
{
ifstream cin("cutii.in");
ofstream cout("cutii.out");
int n, t, i, j;
cin >> n >> t;
while (t--)
{
for (i = 1; i <= n; i++)
{
cin >> v[i].x >> v[i].y >> v[i].z;
}
sort(v + 1, v + n + 1, cmp);
for (i = 1; i <= n; i++)
{
dp[i] = 1;
for (j = i - 1; j >= 1; j--)
if (v[i] < v[j])
dp[i] = max(dp[i], dp[j] + 1);
}
int mx = 0;
for (i = 1; i <= n; i++)
{
mx = max(mx, dp[i]);
dp[i] = 0;
}
cout << mx << "\n";
}
}