Pagini recente » Cod sursa (job #570432) | Cod sursa (job #843589) | Cod sursa (job #384436) | Cod sursa (job #2780041) | Cod sursa (job #20151)
Cod sursa(job #20151)
#include<stdio.h>
int main()
{int n,t,x[1002],y[1002],aux,z[1002],i,ok,p,k,j,ii,l[1002],q[1002],max,r;
FILE *f,*g;
f=fopen("cutii.in","r");
g=fopen("cutii.out","w");
fscanf(f,"%d %d",&n,&t);
for (r=1;r<=t;r++)
{ ii=0;
for (i=1; i<=n;i++)
fscanf(f,"%d %d %d",&x[i],&y[i],&z[i]);
do
{ok=1;
for (i=1;i<=n;i++)
if (x[i]>x[i+1]) {ok=0;
aux=x[i]; x[i]=x[i+1]; x[i+1]=aux;
aux=y[i]; y[i]=y[i+1]; y[i+1]=aux;
aux=z[i]; z[i]=z[i+1]; z[i+1]=aux;}
else if (x[i]==x[i+1]) if (y[i]>y[i]+1){ok=0;
aux=x[i]; x[i]=x[i+1]; x[i+1]=aux;
aux=y[i]; y[i]=y[i+1]; y[i+1]=aux;
aux=z[i]; z[i]=z[i+1]; z[i+1]=aux;}
else if (y[i]==y[i+1]) if (z[i]>z[i+1]) {ok=0;
aux=x[i]; x[i]=x[i+1]; x[i+1]=aux;
aux=y[i]; y[i]=y[i+1]; y[i+1]=aux;
aux=z[i]; z[i]=z[i+1]; z[i+1]=aux;}
}
while (ok==0) ;
q[n]=0; l[n]=1;
for (i=n-1; i>=1;i--)
{max=0; k=0;
for (j=i+1; j<=n;j++)
if (x[i]<x[j]&&l[j]>max&&y[i]<y[j]&&z[i]<z[j]) {max=l[j]; k=j;}
l[i]=max+1;
q[i]=k;}
max=0;
for (i=1;i<=n;i++) if (l[i]>max) {max=l[i]; p=i;}
while (p!=0)
{ii++;
p=q[p];}
fprintf(g,"%d\n",ii);}
fclose(f);
fclose(g);
return 0;}