Pagini recente » Cod sursa (job #1291360) | Cod sursa (job #1560299) | Cod sursa (job #2307347) | Cod sursa (job #2550807) | Cod sursa (job #1144167)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
int n,q,lung[4000],poz[4000];
struct co{ int x,y,z;};
co v[4000];
int ord(co i,co j)
{
if(i.x==j.x)
if(i.y==j.y)
return i.z<j.z;
else
return i.y<j.y;
return i.x<j.x;
}
void afisare()
{
int i;
for(i=1;i<=n;i++)
out<<v[i].x<<' '<<v[i].y<<' '<<v[i].z<<'\n';
out<<'\n';
}
void citire()
{
int i;
for(i=1;i<=n;i++)
in>>v[i].x>>v[i].y>>v[i].z;
}
int verificare(int i,int j)
{
if(v[i].x <= v[j].x && v[i].y <= v[j].y && v[i].z <= v[j].z)
return 1;
return 0;
}
void raspuns()
{
int i,j,max=0;
citire();
sort(v+1,v+n+1,ord);
lung[n]=1;
poz[n-1]=1;
for(i=n-1;i>=1;i--)
{
max=0;
lung[i]=1;
for(j=i+1;j<=n;j++)
if(verificare(i,j))
{
if(lung[j]>max)
max=lung[j];
if(max>=poz[i])
{
break;
}
}
lung[i]=max+1;
poz[i-1]=max+1;
}
max=0;
for(i=1;i<=n;i++)
if(max<lung[i])
max=lung[i];
out<<max;
out<<'\n';
}
int main ()
{
int i;
in>>n>>q;
for(i=1;i<=q;i++)
raspuns();
}