Pagini recente » Cod sursa (job #1708293) | Cod sursa (job #2255747) | Cod sursa (job #1826802) | Cod sursa (job #2258767) | Cod sursa (job #1342958)
#include <fstream>
#include <cstring>
#include <algorithm>
#define DIM 3502
#define bit(x) ((x&(x-1))^x)
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int N,T,L[DIM],solmax,A[DIM][DIM];
struct cutie{
int first;
int second;
int third;
};
cutie v[DIM];
int cmp(cutie a,cutie b){
return a.first<b.first;
}
void update(int x,int y,int val){
for(int i=x;i<=N;i+=bit(i))
for(int j=y;j<=N;j+=bit(j))
A[i][j]=max(A[i][j],val);
}
int query(int a,int b){
int sol=0;
for(int i=a;i>=1;i-=bit(i))
for(int j=b;j>=1;j-=bit(j))
sol=max(sol,A[i][j]);
return sol;
}
int main(){
fin>>N>>T;
while(T--){
for(int i=1;i<=N;i++)
fin>>v[i].first>>v[i].second>>v[i].third;
sort(v+1,v+N+1,cmp);
solmax=0;
memset(A,0,sizeof(A));
for(int i=1;i<=N;i++){
int maxim=1+query(v[i].second-1,v[i].third-1);
update(v[i].second,v[i].third,maxim);
solmax=max(maxim,solmax);
}
fout<<solmax<<"\n";
}
fin.close();fout.close();
return 0;
}