Pagini recente » Cod sursa (job #1026291) | Cod sursa (job #379330) | Cod sursa (job #1450637) | Cod sursa (job #2091069) | Cod sursa (job #73109)
Cod sursa(job #73109)
#include <stdio.h>
FILE *f1,*f2;
long n,t,i,j,k,max;
long x[4001],y[4001],z[4001],v[4001];
long long a[4001];
void radix()
{
long p,i,j,x,nr;
long long m[10][1501],k;
p=1;
for (i=1;i<=20;i++)
{
for (j=0;j<=9;j++) m[j][0]=0;
for (j=1;j<=n;j++)
{
x=a[j]/p%10;
m[x][m[x][0]+1]=a[j];
m[x][0]++;
}
nr=0;
for (j=0;j<=9;j++)
{
for (k=1;k<=m[j][0];k++)
{
nr++;
a[nr]=m[j][k];
}
}
p=p*10;
}
}
int main()
{
f1=fopen("cutii.in","r");
f2=fopen("cutii.out","w");
fscanf(f1,"%ld",&n);
fscanf(f1,"%ld",&t);
for (k=1;k<=t;k++)
{
for (i=1;i<=n;i++)
{
fscanf(f1,"%ld",&x[i]);
fscanf(f1,"%ld",&y[i]);
fscanf(f1,"%ld",&z[i]);
a[i]=x[i];
a[i]=a[i]*100000000;
a[i]=a[i]+y[i]*10000;
a[i]=a[i]+z[i];
}
radix();
for (i=1;i<=n;i++)
{
x[i]=a[i]/100000000;
y[i]=a[i]%100000000/10000;
z[i]=a[i]%10000;
}
for (i=n;i>=1;i--)
{
max=0;
for (j=i+1;j<=n;j++)
{
if (x[i]<x[j] && y[i]<y[j] && z[i]<z[j] && v[j]>max) max=v[j];
if (n-j==max) break;
}
v[i]=max+1;
}
max=0;
for (i=1;i<=n;i++)
{
if (max<v[i]) max=v[i];
v[i]=0;
}
fprintf(f2,"%ld",max);
fprintf(f2,"\n");
}
fclose(f1);
fclose(f2);
return(0);
}