Pagini recente » Cod sursa (job #1507618) | Cod sursa (job #930601) | Cod sursa (job #2120334) | Cod sursa (job #1114319) | Cod sursa (job #3265035)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
int n,t,aib[3502][3502],maxi;
struct elem{
int a,x,y;
bool operator<(const elem& other)const{
return a<other.a;
}
}v[3502];
void update(int pi,int pj,int x){
for(int i=pi;i<=n;i+=(-i)&i)
for(int j=pj;j<=n;j+=(-j)&j)
aib[i][j]=max(aib[i][j],x);
}
int query(int pi,int pj){
int r=0;
for(int i=pi;i>0;i-=(-i)&i)
for(int j=pj;j>0;j-=(-j)&j)
r=max(r,aib[i][j]);
return r;
}
int main()
{
cin>>n>>t;
while(t--){
for(int i=1;i<=n;i++)
cin>>v[i].a>>v[i].x>>v[i].y;
sort(v+1,v+n+1);
memset(aib,0,sizeof(aib));
maxi=0;
for(int i=1;i<=n;i++){
int inside=query(v[i].x-1,v[i].y-1);
maxi=max(maxi,inside+1);
update(v[i].x,v[i].y,inside+1);
}
cout<<maxi<<'\n';
}
return 0;
}