Pagini recente » Cod sursa (job #473261) | Cod sursa (job #2197147) | Cod sursa (job #266887) | Cod sursa (job #1698153) | Cod sursa (job #3198249)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("cutii.in");
ofstream fout("cutii.out");
int n,i,j,a[3503][3503],T,S,L,st,dr;
struct elem
{
int x,y,z;
}V[3503];
struct elem1
{
int y,z;
}D[3503];
void init()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=0;
}
void update(int x,int y,int val)
{
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],val);
}
int query(int x,int y)
{
int S=0;
for(int i=x;i;i-=(i&(-i)))
for(int j=y;j;j-=(j&(-j)))
S=max(S,a[i][j]);
return S;
}
int main()
{
fin>>n>>T;
while(T--)
{
init();
for(i=1;i<=n;i++)
fin>>V[i].x>>V[i].y>>V[i].z;
sort(V+1,V+n+1,[](elem a,elem b){
if(a.x==b.x)
{
if(a.y==b.y)
return a.z<b.z;
return a.y<b.y;
}
return a.x<b.x;
});
L=1;
for(i=1;i<=n;i++)
{
S=query(V[i].y,V[i].z)+1;
update(V[i].y,V[i].z,S);
L=max(L,S);
}
fout<<L<<"\n";
}
return 0;
}