Pagini recente » Cod sursa (job #72828) | Cod sursa (job #850226) | Cod sursa (job #718163) | Cod sursa (job #1399621) | Cod sursa (job #1426343)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#define boxx pair < int , pair < int , int > >
#define X first
#define Y second.first
#define Z second.second
using namespace std;
const int Nmax = 3510;
int n , T , i , crt , lg;
boxx box[Nmax];
vector < boxx > left;
vector < boxx > :: iterator poz;
bool comp(boxx a , boxx b)
{
return (a.X < b.X && a.Y < b.Y && a.Z < b.Z);
}
int main()
{
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
for (scanf("%d %d", &n, &T); T; --T)
{
for (i = 1; i <= n; ++i)
scanf("%d %d %d", &box[i].X , &box[i].Y , &box[i].Z);
sort(box + 1 , box + n + 1);
for (lg = 0 , i = 1; i <= n; ++i)
{
poz = upper_bound(left.begin() , left.end() , box[i]);
if (poz == left.end() && (left.empty() || comp(*(--poz) , box[i])))
{
left.push_back(box[i]);
lg = left.size();
}
else if (poz == left.begin() || comp(*(--poz) , box[i]))
{
if (comp(*poz , box[i])) poz++;
*poz = box[i];
}
}
left.clear();
printf("%d\n", lg);
}
return 0;
}