Pagini recente » Cod sursa (job #1732739) | Cod sursa (job #2372947) | Cod sursa (job #1347078) | jc2016/clasament | Cod sursa (job #1231308)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("cutii.in");
ofstream fout ("cutii.out");
int a[3510][3510];
int n,t,maxim,i,j,sum;
struct data {
int x;
int y;
int z;
}v[3510];
bool cmp (data x, data y) {
return x.z<y.z;
}
void update(int x,int y) {
for (int i=x;i<=n;i+=(i&(-i)))
for (int j=y;j<=n;j+=(j&(-j)))
a[i][j]=max(a[i][j],sum+1);
}
void query (int x,int y) {
for (int i=x; i>0; i-=(i&(-i)))
for (int j=y;j>0;j-=(j&(-j)))
sum=max(sum,a[i][j]);
if (sum+1>maxim)
maxim=sum+1;
}
int main () {
fin>>n>>t;
while (t--) {
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=0;
maxim=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++) {
sum=0;
query (v[i].x-1,v[i].y-1);
update (v[i].x,v[i].y);
}
fout<<maxim<<"\n";
}
return 0;
}