Pagini recente » Cod sursa (job #134943) | Cod sursa (job #2141830) | Cod sursa (job #420742) | Cod sursa (job #566630) | Cod sursa (job #3202231)
#include <bits/stdc++.h>
#define MAXN 3500
ifstream cin("cutii.in");
ofstream cout("cutii.out");
struct cutie{
int x, y, z;
}v[MAXN + 1];
int aib[MAXN + 1][MAXN + 1];
using namespace std;
void update(int y, int z, int l, int n){
for( int i = y; i < n; i += (i & -i))
for( int j = z; j < n; j += (j & -j))
aib[i][j] = max(aib[i][j], l);
}
int query(int y, int z){
int rez = 0;
for( int i = y; i > 0; i -= (i & -i))
for( int j = z; j > 0; j -= (j & -j))
rez = max(aib[i][j], rez);
return rez;
}
static inline int cmp(cutie a, cutie b){
return a.x < b.x;
}
int main()
{
int n, t, i, sol, j, rez;
cin >> n >> t;
while(t--){
sol = -1;
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++ ){
rez = query(v[i].y, v[i].z) + 1;
sol = max(rez, sol);
update(v[i].y, v[i].z, rez, n);
}
cout << sol << "\n";
for( i = 1; i <= n; i++ ){
for( j = 1; j <= n; j++ ){
aib[i][j] = 0;
}
}
}
return 0;
}