Pagini recente » Cod sursa (job #394479) | Cod sursa (job #2280415) | Cod sursa (job #20036) | Cod sursa (job #822933) | Cod sursa (job #20196)
Cod sursa(job #20196)
#include<stdio.h>
int main()
{int n,t,x[35],y[35],aux,z[35],i,ok,p,k,j,ii,l[35],q[35],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;}