Cod sursa(job #340869)

Utilizator mgntMarius B mgnt Data 16 august 2009 20:13:31
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
using namespace std ;

struct cutie { int x, y, z; } ;
cutie C [3500]; int X [3501], F [3501] ;

void numara ( int n ) {
  int i , e ; cutie & c = C[X[n]] ; F[n]=1 ;
  for ( i=n-1; F[n] <= i; --i ) { cutie & cc = C[X[i]];
    if ( (c.y>cc.y) && (c.z>cc.z) ) {
      if ( 0 == F[i] ) { (void)numara(i); } e=1+F[i];
      if ( e>F[n] ) { F[n]=e; }
    }
  }
}

int
main ( ) {
  FILE * f = fopen ("cutii.in", "r"), * g = fopen ( "cutii.out", "w" ) ;
  int n, t, s, i, x, y, z ;
  fscanf ( f, "%d %d", &n, &t);
  for ( s=0; t>s; ++s ) {
    for ( i=0; n>i; ++i ) {
      fscanf ( f, "%d %d %d", &x, &y, &z ) ;
      C[i].x=x; C[i].y=y; C[i].z=z; X[x]=i; F[x]=0;
    }
    for ( i=n-1; 0<i; --i ) { if (0 == F[i]) { numara(n); } }
    z=F[1]; for ( i=2; n>=i; ++i ) { if ( F[i]>z ) { z=F[i]; } }
    fprintf ( g, "%d\n", z ) ;
  }
  fclose (f); fclose(g); return 0 ;
}