Pagini recente » Cod sursa (job #2664704) | Cod sursa (job #2900390) | Cod sursa (job #3042062) | Cod sursa (job #2427031) | Cod sursa (job #2708995)
#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;
}