Pagini recente » Rating felcher andreea (Felcher) | Cod sursa (job #2444545) | Cod sursa (job #1855142) | Cod sursa (job #94617) | Cod sursa (job #222706)
Cod sursa(job #222706)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAX_L 3600
int n, t, i, j, k, sol, x;
int a[MAX_L][3], v[MAX_L];
int aib[MAX_L][MAX_L];
void cit() {
freopen("cutii.in", "r", stdin);
freopen("cutii.out", "w", stdout);
scanf("%d %d", &n, &t);
}
inline int cmp(int x, int y) {
return a[x][2] < a[y][2];
}
inline int lsb(int x) {
return x ^ (x & (x - 1));
}
int query(int x, int y) {
int nr = 0;
for (int i = x; i > 0; i -= lsb(i))
for (int j = y; j > 0; j -= lsb(j))
if (nr < aib[i][j]) nr = aib[i][j];
return nr;
}
void update(int x, int y, int k) {
for (int i = x; i <= n; i += lsb(i))
for (int j = y; j <= n; j += lsb(j))
if (aib[i][j] < k) aib[i][j] = k;
}
void solve() {
while (t) {
sol = 0; t--;
for (i = 1; i <= n; v[i] = i, i++)
scanf("%d %d %d", &a[i][0], &a[i][1], &a[i][2]);
for (i = 0; i <= n; i++)
for (j = 0; j <= n; j++)
aib[i][j] = 0;
sort(v + 1, v + n + 1, cmp);
for (i = 1; i <= n; i++) {
x = query(a[v[i]][0] - 1, a[v[i]][1] - 1) + 1;
if (x > sol) sol = x;
update(a[v[i]][0], a[v[i]][1], x);
}
printf("%d\n", sol);
}
}
int main() {
cit();
solve();
return 0;
}