Pagini recente » Cod sursa (job #2882280) | Cod sursa (job #1277624) | Cod sursa (job #2374840) | Cod sursa (job #2211245) | Cod sursa (job #493460)
Cod sursa(job #493460)
#include <cstdio>
#include <cstring>
using namespace std;
#define N 3505
struct cutie {
short x,y,z;
};
short n;
cutie v[N];
short a[N][N];
short ind[N];
inline short nrb(int x) {
return ((x&(x-1))^x);
}
inline void citire() {
for(short i=1; i<=n; ++i) {
scanf("%hd%hd%hd",&v[i].x,&v[i].y,&v[i].z);
ind[v[i].x] = i;
}
}
inline void update(int x,int y,int val) {
for(short i=x; i<=n; i+=nrb(i)) {
for(short j=y; j<=n; j+=nrb(j))
a[i][j] = ( (a[i][j]<val) ? val : a[i][j] );
}
}
inline short query(int x,int y) {
short ret = 0;
for(short i=x; i>0; i-=nrb(i)) {
for(short j=y; j>0; j-=nrb(j))
ret = ( (ret<a[i][j]) ? a[i][j] : ret );
}
return ret;
}
inline void rezolva() {
short rez = 0,aux,i;
memset(a,0,sizeof(a));
for(short j=1; j<=n; ++j) {
i = ind[j];
aux = query(v[i].y,v[i].z);
++aux;
update(v[i].y,v[i].z,aux);
if(aux>rez)
rez = aux;
}
printf("%hd\n",rez);
}
int main() {
freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
short T;
scanf("%hd%hd",&n,&T);
for(; T!=0; --T) {
citire();
rezolva();
}
return 0;
}