Pagini recente » Cod sursa (job #2322382) | Cod sursa (job #2789674) | Cod sursa (job #1341201) | Cod sursa (job #1361532) | Cod sursa (job #2323420)
#include <fstream>
#include <cstring>
#include <algorithm>
#define DIM 3505
#define x first
#define y second.first
#define z second.second
#define lsb(a) ((a)^((a)-1))&(a)
using namespace std;
ifstream fi("cutii.in");
ofstream fo("cutii.out");
int T;
int n;
pair<int,pair<int,int> > p[DIM];
short int AIB[DIM][DIM];
void update(int a,int b,short int val)
{
for(int i=a;i<=n;i+=lsb(i))
for(int j=b;j<=n;j+=lsb(j))
AIB[i][j]=max(AIB[i][j],val);
}
short int query(int a,int b)
{
short int rez=0;
for(int i=a;i>0;i-=lsb(i))
for(int j=b;j>0;j-=lsb(j))
rez=max(rez,AIB[i][j]);
return rez;
}
int main()
{
fi>>n>>T;
for(int t=1;t<=T;t++)
{
memset(AIB,0,sizeof(AIB));
for(int i=1;i<=n;i++)
fi>>p[i].x>>p[i].y>>p[i].z;
sort(p+1,p+n+1);
for(int i=1;i<=n;i++)
update(p[i].y,p[i].z,query(p[i].y-1,p[i].z-1)+1);
fo<<query(n,n)<<"\n";
}
fi.close();
fo.close();
return 0;
}