Pagini recente » Cod sursa (job #122063) | Cod sursa (job #1867177) | Cod sursa (job #2317638) | Cod sursa (job #2177039) | Cod sursa (job #2643767)
#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(){
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].a - 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].a, -1);
}
}
return 0;
}