Pagini recente » Cod sursa (job #2159029) | Cod sursa (job #1385217) | Cod sursa (job #2577302) | Cod sursa (job #1780257) | Cod sursa (job #847604)
Cod sursa(job #847604)
#include<fstream>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
int n,t,i,j,nr,maxim,best[3501],poz,l[3501];
struct lungimi
{
int x,y,z;
};
lungimi a[3501],aux;
int verif(lungimi a,lungimi b)
{
if(a.x<b.x||a.y<b.y||a.z<b.z)
return 1;
return 0;
}
int verif1(lungimi a, lungimi b)
{
if(a.x>=b.x||a.y>=b.y||a.z>=b.z)
return 1;
return 0;
}
int cauta(lungimi x)
{
int st,dr,m;
st=0;
dr=nr;
m=(st+dr)/2;
while(st<=dr)
{
if(verif(a[l[m]],x)&&verif1(a[l[m+1]],x))
return m;
else
if(verif(a[l[m]],x))
{
st=m+1;
m=(st+dr)/2;
}
else
{
dr=m-1;
m=(st+dr)/2;
}
}
return nr;
}
int main()
{
f>>n>>t;
while(t--)
{
maxim=0;
for(i=1;i<=n;++i)
{
f>>a[i].x>>a[i].y>>a[i].z;
l[i]=best[i]=0;
}
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(a[i].x>a[j].x)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
l[1]=best[1]=nr=1;
for(i=2;i<=n;++i)
{
poz=cauta(a[i]);
best[i]=poz+1;
l[poz+1]=i;
if(poz+1>nr)
nr=poz+1;
if(poz+1>maxim)
maxim=poz+1;
}
g<<maxim<<"\n";
}
return 0;
}