Cod sursa(job #257854)
#include <fstream>
using namespace std;
struct boxd{
int x,y,z;
};
boxd b[3500];
int box[3500];
int compareb (const void * p1, const void * p2)
{
boxd *p1b = (boxd *)p1;
boxd *p2b = (boxd *)p2;
if (p1b->x<p2b->x)
return -1;
if (p1b->x>p2b->x)
return 1;
return 0;
}
int main()
{
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n,t;
fin>>n>>t;
box[0]=1;
for (int i=0;i<t;i++)
{
for (int j=0;j<n;j++)
{
fin>>b[j].x>>b[j].y>>b[j].z;
}
qsort(b,n,sizeof(b[0]),compareb);
int bmax =1;
for (int j=1;j<n;j++)
{
int max = 1;
for (int k=0;b[k].x<b[j].x;k++)
{
if ((b[k].y<b[j].y)&&(b[k].z<b[j].z)&&((box[k]+1)>max))
max = box[k]+1;
}
box[j] = max;
if (max>bmax)
bmax = max;
}
fout<<bmax<<endl;
}
fin.close();
fout.close();
return 0;
}