Pagini recente » Cod sursa (job #2479854) | Cod sursa (job #1781972) | Cod sursa (job #2889187) | Cod sursa (job #2382963) | Cod sursa (job #1426303)
#include <fstream>
#define z first
#define x second.first
#define y second.second
#define ub(x) (x&(-x))
#include <algorithm>
#define NM 3505
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
int i,j,X,Y,d,aib[NM][NM],n,t;
pair<int, pair<int,int> > a[NM];
inline int mx(int a,int b)
{
return (a<b?b:a);
}
inline int Query(int xx,int yy)
{
int i,j,nr=0;
for(i=xx;i;i-=ub(i))
for(j=yy;j;j-=ub(j))
nr=mx(nr,aib[i][j]);
return nr;
}
inline void Insert(int xx,int yy,int v)
{
int i,j;
for(i=xx;i<=n;i+=ub(i))
for(j=yy;j<=n;j+=ub(j))
aib[i][j]=mx(aib[i][j],v);
}
inline void clear(int xx,int yy)
{
int i,j;
for(i=xx;i<=n;i+=ub(i))
for(j=yy;j<=n;j+=ub(j))
aib[i][j]=0;
}
int main()
{
f>>n>>t;
while(t--)
{
for(i=1;i<=n;++i) f>>a[i].x>>a[i].y>>a[i].z;
sort(a+1,a+n+1);
for(i=1;i<=n;++i)
{
X=a[i].x;Y=a[i].y;
d=Query(X-1,Y-1)+1;
Insert(X,Y,d);
}
g<<Query(n,n)<<'\n';
for(i=1;i<=n;++i) clear(a[i].x,a[i].y);
}
return 0;
}