Cod sursa(job #127273)

Utilizator razvi9Jurca Razvan razvi9 Data 23 ianuarie 2008 18:23:25
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include<stdio.h>
#include<string.h>
int l[3501][3],n,i,j,t,gr[3501],max,m[3501];
char a[3501][3501],viz[3501];
void DF(int vf)
{viz[vf]=1;
 m[vf]=1;
 for(int i=1;i<=n;i++)
  if(a[vf][i]){
   if(!viz[i]) DF(i);
   if(m[vf]<m[i]+1) m[vf]=m[i]+1;}}
void sol1()
{for(;t;t--){
  memset(a,0,sizeof(a));
  memset(viz,0,sizeof(viz));
  memset(m,0,sizeof(m));
  memset(gr,0,sizeof(gr));
  max=0;
  for(i=1;i<=n;i++)
   scanf("%d %d %d",&l[i][0],&l[i][1],&l[i][2]);
  for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
    if(l[j][0]<l[i][0]&&l[j][1]<l[i][1]&&l[j][2]<l[i][2])
     a[i][j]=1,gr[j]++;
  for(i=1;i<=n;i++)
   if(!gr[i]){DF(i);
    if(max < m[i]) max=m[i]; }
  printf("%d\n",max);}}

int poz(int i,int j)
{int x=0,y=-1,aux;
 while(i<j)
 {if(l[i][0]>l[j][0])
   {aux=x;x=-y;y=-aux;
    aux=l[i][0];l[i][0]=l[j][0];l[j][0]=aux;
    aux=l[i][1];l[i][1]=l[j][1];l[j][1]=aux;
    aux=l[i][2];l[i][2]=l[j][2];l[j][2]=aux;}
  i=i+x;j=j+y;}
 return i;}

void sort(int i,int j)
{if(i>=j) return;
 int k=poz(i,j);
 sort(i,k-1);
 sort(k+1,j);}

void sol2()
{for(;t;t--){
  for(i=1;i<=n;i++)  scanf("%d %d %d",&l[i][0],&l[i][1],&l[i][2]);
  sort(1,n);
  m[1]=1;
  for(i=2;i<=n;i++) {m[i]=0;
   for(j=1;j<i;j++)
    if(l[j][0]<l[i][0] && l[j][1]<l[i][1] && l[j][2]<l[i][2])
     if(m[j]+1>m[i]) m[i]=m[j]+1;  }
  printf("%d\n",m[n]);}
}

int main()
{freopen("cutii.in","r",stdin);
 freopen("cutii.out","w",stdout);
 scanf("%d %d",&n,&t);
 sol2();
 fclose(stdout);
 return 0;}