Pagini recente » Cod sursa (job #2463142) | Cod sursa (job #400313) | Cod sursa (job #709471) | Cod sursa (job #923391) | Cod sursa (job #3266809)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
struct vec {
int x, y, z;
} a[3505], lg[3505];
int n, t, nr;
bool cmp(vec a, vec b) {
if (a.x != b.x) return a.x < b.x;
if (a.y != b.y) return a.y < b.y;
return a.z < b.z;
}
void add(int q, int w) {
lg[q] = a[w];
}
void sclm() {
add(1, 1);
nr = 1;
for (int i = 2; i <= n; i++) {
if (a[i].x > lg[nr].x && a[i].y > lg[nr].y && a[i].z > lg[nr].z) {
add(++nr, i);
} else {
int st = 1, dr = nr, poz = nr + 1;
while (st <= dr) {
int m = (st + dr) / 2;
if (cmp(a[i], lg[m])) {
poz = m;
dr = m - 1;
} else {
st = m + 1;
}
}
add(poz, i);
}
}
}
int main() {
ios_base::sync_with_stdio(false);
f.tie(nullptr);
g.tie(nullptr);
f >> n >> t;
while (t-- > 0) {
for (int i = 1; i <= n; i++) {
f >> a[i].x >> a[i].y >> a[i].z;
}
sort(a + 1, a + n + 1, cmp);
sclm();
g << nr << '\n';
}
return 0;
}