Pagini recente » Cod sursa (job #751035) | Cod sursa (job #830148) | Cod sursa (job #1200110) | Cod sursa (job #711654) | Cod sursa (job #226387)
Cod sursa(job #226387)
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
long i, j, n, t, gef[3510];
struct NOD {
long a, b, c;
};
NOD wef[3600];
bool _cmp(NOD c, NOD d) {
if (c.a < d.a)
return true;
return false;
}
long _check(long poz, long P) {
if (wef[poz].b > wef[P].b && wef[poz].c > wef[P].c) {
return 1;
}
return 0;
}
long _Bsearch(long ls, long ld, long P) {
long mid = 0, poz = 0;
while (ls <= ld) {
mid = (ls + ld) / 2;
if (_check(gef[mid], P)) {
poz = mid;
ld = mid - 1;
} else {
ls = mid + 1;
}
}
return poz;
}
long _Fscmax() {
long con = 0;
memset(gef, 0, sizeof(gef));
for (long i = 1; i <= n; ++i) {
long aux = _Bsearch(1, con, i);
if (aux) {
gef[aux] = i;
} else {
gef[++con] = i;
}
}
return con;
}
int main() {
freopen("cutii.in", "r", stdin);
freopen("cutii.out", "w", stdout);
scanf("%ld %ld", &n, &t);
for (i = 1; i <= t; ++i) {
for (j = 1; j <= n; ++j) {
scanf("%ld %ld %ld", &wef[j].a, &wef[j].b, &wef[j].c);
}
sort(wef + 1, wef + n + 1, _cmp);
printf("%ld\n", _Fscmax());
}
return 0;
}