Cod sursa(job #235850)

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