Pagini recente » Cod sursa (job #214282) | Cod sursa (job #2683285) | Cod sursa (job #818018) | Cod sursa (job #1672606) | Cod sursa (job #1198139)
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
#define Nmax 3505
#define INF 0x3f3f3f3f
using namespace std;
class cutii{
public:
int x,y,z;
cutii()
{
x = y = z = 0;
}
};
class cmp{
public:
bool operator()(const cutii &c1,const cutii &c2)const
{
return c1.x < c2.x;
}
};
cutii make_cutie(int x,int y,int z)
{
cutii c;
c.x = x; c.y = y; c.z = z;
return c;
}
vector<cutii> V;
int DP[Nmax];
int N,T;
void R()
{
cutii c;
V.clear();
memset(DP,0,sizeof(DP));
int x,y,z;
for(int i = 1; i <= N; ++i)
{
scanf("%d%d%d",&x,&y,&z);
V.push_back(make_cutie(x,y,z));
}
sort(V.begin(),V.end(),cmp());
}
bool cuplez(cutii &c1, cutii &c2)
{
return (c1.x < c2.x && c1.y < c2.y && c1.z < c2.z);
}
void solve()
{
int maxi = 1;
for(int i = 0; i < N; ++i)
{
DP[i] = 1;
for(int j = i - 1; j >= 0; --j)
if(cuplez(V[j],V[i]) && DP[i] < DP[j] + 1)
{
DP[i] = DP[j] + 1;
maxi = max(maxi,DP[i]);
}
}
printf("%d\n",maxi);
}
void read()
{
scanf("%d%d",&N,&T);
for(int i = 1; i <= T; ++i)
{
R();
solve();
}
}
int main()
{
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
read();
return 0;
}