Pagini recente » Cod sursa (job #2787351) | Cod sursa (job #715003) | Cod sursa (job #1059185) | Cod sursa (job #1871742) | Cod sursa (job #2478697)
#include <fstream>
#include <algorithm>
#include <cstring>
#define NM 3503
#define N 103
#define pas(x) (x&(-x))
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
int n,t,i,j,k,mx,S;
int r[NM],aib[NM][NM];
struct cutie{
int x,y,z;
};
cutie a[NM];
bool cmp( cutie c, cutie d ){
return c.x<d.x;
}
void add(int q,int p,int val){
for(i=q;i<=n;i+=pas(i))
for(j=p;j<=n;j+=pas(j))
aib[i][j]=max(aib[i][j],val);
}
int sum(int q,int p){
int max1=0;
for(i=q;i>0;i-=pas(i))
for(j=p;j>0;j-=pas(j))
max1=max(max1,aib[i][j]);
return max1;
}
int main()
{
f>>n>>t;
while(t!=0){ t--;
for(i=1;i<=n;i++) f>>a[i].x>>a[i].y>>a[i].z;
sort(a+1,a+n+1,cmp);
mx=0;
for(k=1;k<=n;k++){
S=sum(a[k].y,a[k].z)+1;
mx=max(mx,S);
add(a[k].y,a[k].z,S);
}
g<<mx<<'\n';
memset(aib,0,sizeof(aib));
}
return 0;
}