Pagini recente » Cod sursa (job #3256256) | Cod sursa (job #481670) | Cod sursa (job #3235585) | Cod sursa (job #861177) | Cod sursa (job #1231700)
#include <cstdio>
#include <algorithm>
#include <cstring>
#define putere(x) (x)&(-x)
using namespace std;
struct paralelipiped
{
int x,y,z;
bool operator <(const paralelipiped &aux) const
{
return x<aux.x;
}
}v[3510];
int aib[3505][3505],n,t,i,maxx,s;
void aib_update(int y,int z,int a)
{
for(int i=y;i<=n;i+=putere(i))
for(int j=z;j<=n;j+=putere(j))
aib[i][j]=max(aib[i][j],a);
}
int aib_query(int y,int z)
{
int s=0,i,j;
for(i=y;i>0;i-=putere(i))
for(j=z;j>0;j-=putere(j))
s=max(s,aib[i][j]);
return s;
}
int main()
{
freopen("cutii.in", "r", stdin);
freopen("cutii.out", "w", stdout);
scanf("%d%d",&n,&t);
for(;t;t--)
{
for(i=1;i<=n;i++) scanf("%d%d%d",&v[i].x,&v[i].y,&v[i].z);
sort(v+1,v+1+n);
maxx=0;
memset(aib, 0, sizeof(aib));
for(i=1;i<=n;i++)
{
s=aib_query(v[i].y,v[i].z)+1;
aib_update(v[i].y,v[i].z,s);
maxx=max(maxx,s);
}
printf("%d\n",maxx);
}
return 0;
}