Pagini recente » Cod sursa (job #1389307) | Cod sursa (job #1111316) | Cod sursa (job #2349828) | Cod sursa (job #1098122) | Cod sursa (job #442716)
Cod sursa(job #442716)
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct cub
{
int x,y,z;
};
cub a[1<<12];
int n,t,maxim,v[1<<12];
vector<int> L[1<<12];
bool comp(const cub &A,const cub &B)
{
if(A.x<B.x) return false;
if(A.x>B.x) return true;
if(A.y<B.y) return false;
if(A.y>B.y) return true;
if(A.z<B.z) return false;
return true;
}
void df(int nod,int lung)
{
if(lung>maxim)
maxim=lung;
for(vector<int>::iterator it=L[nod].begin();it!=L[nod].end();it++)
df(*it,lung+1);
}
int main()
{
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
scanf("%d%d",&n,&t);
for(;t>=1;t--)
{
for(int i=1;i<=n;i++)
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
sort(a+1,a+n+1,comp);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(a[i].x>a[j].x && a[i].y>a[j].y && a[i].z>a[j].z)
L[i].push_back(j);
maxim=0;
for(int i=1;i<=n;i++)
df(i,1);
printf("%d\n",maxim);
for(int i=1;i<=n;i++)
L[i].clear();
}
return 0;
}