Pagini recente » Cod sursa (job #2835749) | Cod sursa (job #88972) | Cod sursa (job #2069107) | Cod sursa (job #2859302) | Cod sursa (job #3268891)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
const int Max = 3500;
struct Cutie {
int x, y, z;
} cut[Max + 2];
int fr[Max + 2][Max + 2];
int n, q, i, rasp;
static inline int Ub(int a) {
return (a & -a);
}
static inline void Add(int pi, int pj, int val) {
for(int i = pi; i <= Max; i += Ub(i)) {
for(int j = pj; j <= Max; j += Ub(j)) fr[i][j] = max(fr[i][j], val);
}
}
static inline int MaxInt(int pi, int pj) {
int ma = 0;
for(int i = pi; i >= 1; i -= Ub(i)) {
for(int j = pj; j >= 1; j -= Ub(j)) ma = max(ma, fr[i][j]);
}
return ma;
}
static inline bool Cmp(Cutie a, Cutie b) {
return a.x < b.x;
}
static inline void Test() {
for(i = 1; i <= n; i++) fin >> cut[i].x >> cut[i].y >> cut[i].z;
sort(cut + 1, cut + n + 1, Cmp);
rasp = 0;
memset(fr, 0, sizeof(fr));
for(i = 1; i <= n; i++) {
int sum = MaxInt(cut[i].y - 1, cut[i].z - 1);
rasp = max(rasp, sum + 1);
Add(cut[i].y, cut[i].z, sum + 1);
}
fout << rasp << "\n";
}
int main() {
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n >> q;
while(q--) Test();
return 0;
}