Cod sursa(job #2938357)

Utilizator AswVwsACamburu Luca AswVwsA Data 11 noiembrie 2022 23:36:51
Problema Cutii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
//#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";
    }
}