Cod sursa(job #221229)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 15 noiembrie 2008 00:00:54
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<iostream>
#include<stdio.h>
FILE *f,*g;
void ordonez(int a[3501][4],int n)
{
 int i,j,t=1,aux;
 while(t)
 {
  t=0;
  for(i=1;i<=n-1;i++)
   if(a[i][1]>a[i+1][1]&&a[i][2]>a[i+1][2]&&a[i][3]>a[i+1][3])
   {
    aux=a[i][1];a[i][1]=a[i+1][1];a[i+1][1]=aux;
    aux=a[i][2];a[i][2]=a[i+1][2];a[i+1][2]=aux;
    aux=a[i][2];a[i][3]=a[i+1][3];a[i+1][3]=aux;  t=1;
   }
 }
}
int cmlsc(int a[3501][4],int n)
{
  int l[3501],i,j,max,imax,k;
  l[n]=1;
  for(k=n-1;k>=1;k--)
  {
   l[k]=1;i=k;
   do{i++;}while(a[k][1]>a[i][1]&&a[k][2]>a[i][2]&&a[k][3]>a[i][3]&&i<n);
   if(a[k][1]<a[i][1]&&a[k][2]<a[i][2]&&a[k][3]<a[i][3]) l[k]=l[i]+1;
  }
  max=-1;
  for(i=1;i<=n;i++)
   if(l[i]>max) {max=l[i];imax=i;}
  return max;
}
int main()
{
 f=fopen("cutii.in","r");
 g=fopen("cutii.out","w");
 int n,t,a[3501][4];
 fscanf(f,"%d %d",&n,&t);
 int i,j;
 for(i=1;i<=t;i++)
 {
  for(j=1;j<=n;j++)
   fscanf(f,"%d %d %d",&a[j][1],&a[j][2],&a[j][3]);
  ordonez(a,n);
  fprintf(g,"%d\n",cmlsc(a,n));
 }
 return 0;
}