Pagini recente » Cod sursa (job #2472504) | Cod sursa (job #1688278) | Cod sursa (job #3181948) | Cod sursa (job #1889934) | Cod sursa (job #1409479)
#include<cstdio>
#include<vector>
#include<cstring>
int max2(int a,int b){
if(a>b)
return a;
return b;
}
using namespace std;
const int N=3500;
class Cutie{
public:
int x1,x2,x3;
bool operator>(const Cutie&c)const{
return x1>c.x1&&x2>c.x2&&x3>c.x3;
}
};
Cutie v[N+1];
vector<int>g[N+1];
int d[N+1];
int n,t;
int dp(int dad){
if(d[dad])
return d[dad];
for(unsigned int i=0;i<g[dad].size();i++){
int son=g[dad][i];
d[dad]=max2(d[dad],d[son]);
}
d[dad]++;
return d[dad];
}
int main(){
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
scanf("%d%d",&n,&t);
while(t--){
for(int i=1;i<=n;i++)
scanf("%d %d %d",&v[i].x1,&v[i].x2,&v[i].x3);
for(int i=1;i<=n;i++)
g[i].clear();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(v[i]>v[j])
g[i].push_back(j);
memset(d,0,sizeof(d));
int res=0;
for(int i=1;i<=n;i++)
res=max2(res,dp(i));
printf("%d\n",res);
}
return 0;
}