Cod sursa(job #14985)

Utilizator robbyRobertino robert robby Data 10 februarie 2007 14:49:18
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
FILE *f,*g;
int a[3501][4],v[3501],w[3501];
int main()
{
  int n,t,i,j,k,l,nr;
  f=fopen("cutii.in","rt");
  g=fopen("cutii.out","wt");
  fscanf(f,"%d %d",&n,&t);
  for (l=1;l<=t;l++)
	{
	  for (i=1;i<=n;i++)
		fscanf(f,"%d %d %d",&a[i][1],&a[i][2],&a[i][3]);
	  k=n;
	  do
	  {
		j=0;
		for (i=1;i<k;i++)
		  if (a[i][1]>a[i+1][1]||(a[i][1]==a[i+1][1]&&a[i][2]>a[i+1][2])
			||(a[i][1]==a[i+1][1]&&a[i][2]==a[i+1][2]&&a[i][3]>a[i+1][3]))
			{
			  j=a[i][1];
			  a[i][1]=a[i+1][1];
			  a[i+1][1]=j;
			  j=a[i][2];
			  a[i][2]=a[i+1][2];
			  a[i+1][2]=j;
			  j=a[i][3];
			  a[i][3]=a[i+1][3];
			  a[i+1][3]=j;
			}

		k=j;
	  }
	  while (k);
	  nr=0;
	  v[1]=1;
	  w[1]=1;
	  for (i=2;i<=n;i++)
		{
		  j=i;
		  while (j>0&&a[i][2]<=a[j][2])
			j--;
		  if (j==0)
			v[i]=1;
		   else
			v[i]=v[j]+1;

		  j=i;
		  while (j>0&&a[i][3]<=a[j][3])
			j--;
		  if (j==0)
			w[i]=1;
		   else
			w[i]=w[j]+1;
		}
	  for (i=1;i<=n;i++)
		if (v[i]>w[i]&&v[i]>nr)
		  nr=v[i];
		 else
		if (v[i]<=w[i]&&w[i]>nr)
		  nr=w[i];
	  fprintf(g,"%d\n",nr);
	}
  fclose(f);
  fclose(g);
  return 0;
}