Pagini recente » Cod sursa (job #1275980) | Cod sursa (job #2648121) | Cod sursa (job #2211445) | Profil StarGold2 | Cod sursa (job #3271625)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
int aib[3501][3501],n;
struct skibidi{
int a,b,c;
} v[3501];
bool cmp(skibidi a,skibidi b){
if(a.a!=b.a) return a.a<b.a;
if(a.b!=b.b) return a.b<b.b;
return a.c<b.c;
}
int query(int a,int b){
int i,j,rasp;
for(i=a;i;i-=(i&(-i))){
for(j=b;j;j-=(j&(-j))){
rasp=max(rasp,aib[i][j]);
}
}
return rasp;
}
void update(int a,int b,int val){
int i,j;
for(i=a;i<=n;i+=(i&(-i))){
for(j=b;j<=n;j+=(j&(-j))){
aib[i][j]=max(aib[i][j],val);
}
}
}
void reset(int a,int b){
int i,j;
for(i=a;i<=n;i+=(i&(-i))){
for(j=a;j<=n;j+=(j&(-j))){
aib[i][j]=0;
}
}
}
void solve(){
int i,j,max1=0,aux;
for(i=1;i<=n;i++){
cin>>v[i].a>>v[i].b>>v[i].c;
}
sort(v+1,v+n+1,cmp);///printf("%d ",n);
for(i=1;i<=n;i++){
aux=query(v[i].b,v[i].c);
max1=max(max1,aux+1);
update(v[i].b,v[i].c,aux+1);
}
cout<<max1<<"\n";
for(i=1;i<=n;i++) reset(v[i].b,v[i].c);
}
int main()
{
int m;
cin>>n>>m;
while(m--) solve();
return 0;
}