Pagini recente » Cod sursa (job #1964828) | Statistici Dzan Janicki (terrilyn5017) | Cod sursa (job #2706366) | Cod sursa (job #2419107) | Cod sursa (job #424389)
Cod sursa(job #424389)
#include <cstdio>
#include <algorithm>
using namespace std;
#define nmax 3510
struct cutie
{
int x, y, z;
} v[nmax];
int n, a[nmax][nmax], t, sol;
int cmp(cutie a, cutie b)
{
return a.x<b.x;
}
int query(int x, int y)
{
int r=0, j;
do
{
j=y;
do
{
r=max(r,a[x][j]);
j=j&(j-1);
}
while (j);
x=x&(x-1);
}
while (x);
return r;
}
void update(int x, int y, int val)
{
int j;
do
{
j=y;
do
{
a[x][j]=max(a[x][j],val);
j+=(j&(j-1))^j;
}
while (j<=n);
x+=(x&(x-1))^x;
}
while (x<=n);
}
int main()
{
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
scanf("%d %d",&n,&t);
int i, c, j;
while (t--)
{
for (i=1; i<=n; i++) scanf("%d %d %d",&v[i].x,&v[i].y,&v[i].z);
sort(v+1,v+n+1,cmp);
for (i=1; i<=n; i++)
for (j=1; j<=n; j++) a[i][j]=0;
sol=0;
for (i=1; i<=n; i++)
{
c=query(v[i].y-1,v[i].z-1)+1;
sol=max(sol, c);
update(v[i].y,v[i].z, c);
}
printf("%d\n",sol);
}
}