Pagini recente » Cod sursa (job #176732) | Romanian IOI Medalists: Careers | Cod sursa (job #2831263) | Cod sursa (job #129661) | Cod sursa (job #2643887)
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
struct mazan
{
int x,y,z;
} v[3501];
int n,aib[3501][3501];
int lsb(int x)
{
return x&-x;
}
bool cmp(mazan a,mazan b)
{
return a.x<b.x;
}
int ans(int poz1,int poz2)
{
int max1=0;
for(; poz1>0; poz1-=lsb(poz1))
for(int pozz2=poz2; pozz2>0; pozz2-=lsb(pozz2))
max1=max(max1,aib[poz1][pozz2]);
return max1;
}
void upd(int poz1,int poz2,int val)
{
for(; poz1<=n; poz1+=lsb(poz1))
for(int pozz2=poz2; pozz2<=n; pozz2+=lsb(pozz2))
aib[poz1][pozz2]=max(aib[poz1][pozz2],val);
}
int main()
{
int t,i,max1,x,j;
in>>n>>t;
while(t--)
{
max1=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
aib[i][j]=0;
for(i=1; i<=n; i++)
in>>v[i].x>>v[i].y>>v[i].z;
sort(v+1,v+n+1,cmp);
for(i=1; i<=n; i++)
{
x=ans(v[i].y,v[i].z)+1;
max1=max(max1,x);
upd(v[i].y,v[i].z,x);
}
out<<max1<<'\n';
}
return 0;
}