Pagini recente » Cod sursa (job #2318133) | Cod sursa (job #3216166) | Cod sursa (job #1946393) | Cod sursa (job #2840359) | Cod sursa (job #2709014)
#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], vmin[NMAX];
int cmp ( numar a, numar b )
{
if ( a.l < b.l && a.q < b.q && a.g < b.g )
return -1;
if ( a.l > b.l && a.q > b.q && a.g > b.g )
return 1;
if ( a.l == b.l && a.q == b.q && a.g == b.g )
return 0;
return -10;
}
int n, t;
int hMax;
int l[NMAX];
int poz, k, imax;
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;
l[1] = 1;
k = 1;
vmin[2] = v[1];
imax = 0;
for ( int i = 1 ; i <= n ; ++i )
{
int st = 1, dr = k, ans = 0, m;
while ( st <= dr )
{
m = ( st + dr ) / 2;
if ( cmp ( v[i], vmin[m] ) > 0 )
{
ans = m;
st = m+1;
}
else
dr = m-1;
}
if ( ans )
{
if ( ans == k )
{
vmin[++k] = v[i];
imax = i;
}
else
vmin[ans+1] = v[i];
}
else
{
if ( cmp ( v[i], vmin[1] ) == -1 )
vmin[1] = v[i];
}
l[i] = ans;
}
out << l[imax] << '\n';
}
return 0;
}