Cod sursa(job #14348)

Utilizator nemesisIchim Alexandru Eugen nemesis Data 8 februarie 2007 20:23:55
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#include<stdlib.h>

struct nod { int a, b, c;} v[3502];
int n, t, x[3502];

int comp( const void *i, const void *j)
{
  nod *ei= (nod*)i,
      *ej= (nod*)j;

  if( ei->a != ej->a) return ej->a - ei->a;
  if( ei->b != ej->b) return ej->b - ei->b;
  return ej->c - ei->c;
}

void afis()
{
  for(int i=1; i<=n; ++i) printf("%d %d %d\n",v[i].a, v[i].b, v[i].c);
  printf("\n");
}


void solve()
{
  int MAX=0;
  for(int i=1; i<=n; ++i) {
    int max=0;
    for(int j=i-1; j>=1; --j) if( v[j].b> v[i].b && v[j].c> v[i].c && x[j] > max) max=x[j];
    max++;
    x[i]= max;
    if(max> MAX) MAX=max;
  }
  printf("%d\n",MAX);

}

int main()
{
  freopen("cutii.in","r",stdin);
  freopen("cutii.out","w",stdout);
  scanf("%d %d",&n,&t);
  for(int i=1; i<=t; ++i) {
    for(int j=1; j<=n; ++j) scanf("%d %d %d",&v[j].a,&v[j].b,&v[j].c);
    qsort(v+1, n, sizeof(nod), comp);
    solve();
  }


  return 0;
}