Pagini recente » Cod sursa (job #820234) | Cod sursa (job #2116825) | Cod sursa (job #1820410) | Cod sursa (job #2001803) | Cod sursa (job #380568)
Cod sursa(job #380568)
#include<fstream>
#define inf "cutii.in"
#define outf "cutii.out"
#define NMax 3501
using namespace std;
fstream f(inf,ios::in),g(outf,ios::out);
int N,T;
int best[NMax];
struct cutie
{
int x;
int y;
int z;
};
cutie c[NMax];
bool rule(cutie a,cutie b)
{
if(a.z<b.z)return true;
else if(a.z==b.z)
{
if(a.y<b.y)return true;
else if(a.y==b.y)
{
if(a.x<b.x)return true;
else return false;
}
return false;
}
return false;
}
bool incape(cutie a,cutie b)
{
if( a.x<b.x && a.y<b.y && a.z<b.z ) return true;
return false;
}
void Rezolva()
{
int max=1;
sort(c+1,c+N+1,rule);
best[1]=1;
for(int i=2;i<=N;i++)
{
best[i]=1;
for(int j=1;j<i;j++)
if( incape(c[j],c[i]) && best[i]<best[j]+1 )
{
best[i]=best[j]+1;
if(max<best[i])max=best[i];
}
}
g<<max<<"\n";
}
void Citire()
{
f>>N>>T;
for(int i=1;i<=T;i++)
{
for(int j=1;j<=N;j++){f>>c[j].x>>c[j].y>>c[j].z;best[j]=0;}
Rezolva();
}
}
int main()
{
Citire();
f.close();
g.close();
return 0;
}