Pagini recente » Cod sursa (job #2701610) | Cod sursa (job #465212) | Cod sursa (job #1080626) | Cod sursa (job #2386495) | Cod sursa (job #309755)
Cod sursa(job #309755)
#include <stdio.h>
long int gasit,i,j,n,m,l[3502],L[3502],h[3502],v[3502],x,ii;
void qsort(long ls, long r)
{
long i,j,x,y;
i=ls;
j=r;
x=v[(ls+r)>>1];
do
{
while ((v[i]<x)&&(i<n)) ++i;
while ((x<v[j])&&(j>1)) --j;
if (i<=j)
{
y=v[i];
v[i]=v[j];
v[j]=y;
y=l[i];
l[i]=l[j];
l[j]=y;
y=L[i];
L[i]=L[j];
L[j]=y;
y=h[i];
h[i]=h[j];
h[j]=y;
++i;
--j;
}
}
while (i<=j);
if (ls<j) qsort(ls,j);
if (i<r) qsort(i,r);
}
int intra(long int i, long int j)
{
long int gasit=1;
if (l[i]>l[j] && L[i]>L[j] && h[i]>h[j])
gasit=0;
return gasit;
}
int main()
{
FILE *g=fopen("cutii.out","w");
FILE *f=fopen("cutii.in","r");
fscanf(f,"%ld %ld",&n,&m);
for (ii=1;ii<=m;ii++)
{
for (i=1;i<=n;i++)
fscanf(f,"%ld %ld %ld",&l[i],&L[i],&h[i]);
for (i=1;i<=n;i++)
v[i]=l[i]*L[i]*h[i];
qsort(1,n);
for (i=1;i<=n+2;i++)
v[i]=0;
v[n]=1;
long int max=0;
for (i=n-1;i>=1;i--)
{
max=0;
for (j=i+1;j<=n;j++)
if (v[j]>=max && intra(i,j)==0)
{
max=v[j];
//break;
}
v[i]=max+1;
}
max=0;
for (i=1;i<=n;i++)
if (max<=v[i])
max=v[i];
fprintf(g,"%ld\n",max);
}
fclose(f);
fclose(g);
return 0;
}