Pagini recente » Cod sursa (job #1365112) | Cod sursa (job #379962) | Cod sursa (job #1794677) | Cod sursa (job #1854324) | Cod sursa (job #2048363)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("cutii.in");
ofstream fout ("cutii.out");
int aib[3502][3502],T,t,sol,i,n,j,r,k;
struct cutie{
int x,y,z;
}v[3510];
bool cmp(cutie a, cutie b){
if(a.z==b.z)
if(a.y==b.y)
return a.x<b.x;
else
return a.y<b.y;
return a.z<b.z;
}
int query (int i, int j){
int r=0;
for(int x=i;x;x-=x&-x)
for(int y=j;y;y-=y&-y)
r=max(r,aib[x][y]);
return r;
}
int update (int i, int j, int xx){
for(int x=i;x<=n;x+=x&-x)
for(int y=j;y<=n;y+=y&-y)
aib[x][y]=xx;
}
int main(){
fin>>n>>T;
for(t=1;t<=T;t++){
r=0;
for(i=1;i<=n;i++)
fin>>v[i].x>>v[i].y>>v[i].z;
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;i++){
r=query(v[i].x-1,v[i].y-1)+1;
update(v[i].x,v[i].y,r);
}
fout<<r<<"\n";
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
aib[i][j]=0;
}
}