Pagini recente » Cod sursa (job #7030) | Cod sursa (job #828327) | Cod sursa (job #3159625) | Cod sursa (job #2374340) | Cod sursa (job #309747)
Cod sursa(job #309747)
#include <stdio.h>
long int gasit,i,j,n,m,l[3502],L[3502],h[3502],v[3502],x,ii;
void qsort(long int li, long int ls)
{
long int i,j,x,y;
i=li; j=ls; x=v[(li+ls)>>1];
while (i<=j)
{
while (v[i]>x) i++;
while (v[j]<x) 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--;
}
}
if (i<ls) qsort(i,ls);
if (j>li) qsort(li,j);
}
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;
}