Pagini recente » Cod sursa (job #2151566) | Cod sursa (job #1998646) | Cod sursa (job #2829114) | Cod sursa (job #1163350) | Cod sursa (job #1236239)
//horatiu11
# include <cstdio>
# include <vector>
# include <cstring>
# define LSB(x) (-x)&x
# define nmax 3501
using namespace std;
int AIB[nmax][nmax],n,t,Max,sol,x,y,z;
pair <int,int>a[nmax];
inline int max(int a, int b)
{
if(a>b)return a;
return b;
}
inline void update(int a, int b, int val)
{
int i,j;
for(i=a;i<=n;i+=LSB(i))
for(j=b;j<=n;j+=LSB(j))
AIB[i][j]=max(AIB[i][j],val);
}
inline int query(int a, int b)
{
int i,j,Max;
for(i=a;i>0;i-=LSB(i))
for(j=b;j>0;j-=LSB(j))
Max=max(Max,AIB[i][j]);
return Max;
}
int main()
{
int i;
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
scanf("%d%d",&n,&t);
while(t)
{
for(i=1;i<=n;++i)
{
scanf("%d%d%d",&x,&y,&z);
a[z]=make_pair(x,y);
}
for(i=1;i<=n;++i)
{
Max=query(a[i].first-1,a[i].second-1);
update(a[i].first,a[i].second,Max+1);
sol=max(sol,Max+1);
}
printf("%d\n",sol);
memset(AIB,0,sizeof(AIB));sol=0;
--t;
}
return 0;
}