Pagini recente » Cod sursa (job #2122806) | Cod sursa (job #476697) | Cod sursa (job #1610101) | Cod sursa (job #246482) | Cod sursa (job #1522236)
#include <bits/stdc++.h>
#define ub(x) (x&(-x))
#define x first
#define y second.x
#define z second.second
using namespace std;
const int NMAX = 3500+10;
pair < int,pair<int , int> > v[NMAX];
int aib[NMAX][NMAX],n,T;
inline void edd(int xX , int yY)
{
for (int i = xX ; i <= n; i+=ub(i))
for (int j = yY; j <= n ; j+=ub(j))
aib[i][j]=max(aib[i][j],aib[xX][yY]);
return ;
}
inline int query(int xX , int yY)
{
int res=0;
for (int i = xX - 1 ; i ; i-=ub(i))
for (int j = yY-1 ; j ; j-=ub(j))
res=max(aib[i][j],res);
return res;
}
int main()
{
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
scanf("%d %d\n",&n,&T);
for ( ; T ; --T)
{
for (int i = 1; i<=n ; ++i)
scanf("%d %d %d",&v[i].x,&v[i].y,&v[i].z);
sort(v+1,v+n+1);
int result = 0;
for (int i = 1; i<=n ; ++i)
{
int s = 1 + query(v[i].y,v[i].z);
result=max(result,s);
aib[v[i].y][v[i].z]=s;
edd(v[i].y,v[i].z);
}
printf("%d\n",result);
memset(aib,0,sizeof(aib));
}
return 0;
}