Pagini recente » Cod sursa (job #2580741) | Cod sursa (job #2765842) | Cod sursa (job #377617) | Cod sursa (job #140111) | Cod sursa (job #2643768)
#include<bits/stdc++.h>
#define NMAX 3503
#define ll long long
using namespace std;
int n, t, AIB[NMAX][NMAX];
struct cutie{
int a,b,c;
}v[NMAX];
void add(int x, int y2, int val){
for (x++;x<NMAX;x += (x & (-x)))
for (int y=y2+1;y<NMAX;y += (y & (-y))){
AIB[x][y] = val > 0 ? max(AIB[x][y], val) : 0;
}
}
int query(int x, int y2){
int ans = 0;
for (x++;x>0;x -= (x & (-x)))
for (int y=y2+1;y>0;y -= (y & (-y))){
ans = max(ans, AIB[x][y]);
}
return ans;
}
int main(){
cin.sync_with_stdio(false);
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
cin >> n >> t;
while (t--){
for (int i=1;i<=n;i++) cin >> v[i].a >> v[i].b >> v[i].c;
sort(v+1,v+n+1,[](cutie A, cutie B){return A.a < B.a;});
int ans = 0;
for (int i=1;i<=n;i++){
int val = query(v[i].b - 1, v[i].c - 1) + 1;
add(v[i].b, v[i].a, val);
ans = max(ans, val);
}
cout << ans << '\n';
for (int i=1;i<=n;i++){
add(v[i].b, v[i].c, -1);
}
}
return 0;
}