Cod sursa(job #20192)

Utilizator FlorianFlorian Marcu Florian Data 20 februarie 2007 20:23:54
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<stdio.h>
int main()
{int n,t,kk,x[3501],y[3501],aux,z[3501],i,p,k,j,ii,l[3501],q[3501],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]);
		for (kk=n;kk>=2;kk--)
		  for (i=1;i<=kk;i++)
				if (x[i]>x[i+1]) {
									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)
									{
									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]) {
										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;}
	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;}