Cod sursa(job #2708995)

Utilizator ElektrykT E S L A P E F E L I E Elektryk Data 19 februarie 2021 17:00:52
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in ("cutii.in");
ofstream out ("cutii.out");

const int NMAX = 4137;

struct numar
{
    int l, g, q, nr;
} v[NMAX];

bool cmp ( numar a, numar b )
{
    return a.g > b.g  ||  ( a.g == b.g  &&  a.l > b.l )  ||  ( a.g == b.g  &&  a.l == b.l   &&  a.q > b.q );
}

int n, t;

int hMax;

int l[NMAX], tata[NMAX], len[NMAX], h[NMAX], sol[NMAX];

int poz;

int main()
{
    in >> n >> t;
    for ( int akd = 1 ; akd <= t ; ++akd )
    {
        for ( int i = 1 ; i <= n ; ++i )
        {
            in >> v[i].l >> v[i].g >> v[i].q;
            v[i].nr = i;
            len[i] = 1;
        }
        sort ( v + 1, v + n + 1, cmp );
        for ( int i = 1 ; i <= n ; ++i )
            h[i] = v[i].l;
        hMax = h[1];
        for ( int i = 2 ; i <= n ; ++i )
        {
            for ( int j = i - 1 ; j > 0 ; --j )
                if ( v[i].l <= v[j].l  &&  v[i].q <= v[j].q  &&  h[i] < h[j] + v[i].l )
                {
                    h[i] = h[j] + v[i].l;
                    tata[i] = j;
                    len[i] = len[j] + 1;
                }
            if ( h[i] > hMax )
            {
                hMax = h[i];
                poz = i;
            }
        }
        int k = poz;
        out << len[k] << '\n';
    }
    return 0;
}