Cod sursa(job #483466)

Utilizator cont_de_testeCont Teste cont_de_teste Data 8 septembrie 2010 21:00:04
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FORi(i,a,b) for(i=a;i>=b;i--)
#include <cstdio>
#include <fstream>
using namespace std;
# include <algorithm>
using namespace std ;

struct cut {
    int X, Y, Z ;
} A[3505] ;

int best[3505] ;
int N, T ;

bool operator < ( const cut &a, const cut &b ) {
    return a.X < b.X ;
}

int main ( void ) {
    freopen ( "cutii.in", "r", stdin ) ;
    freopen ( "cutii.out", "w", stdout ) ;

    for ( scanf ( "%d %d", &N, &T ) ; T ; --T ) {
        for ( int i = 1; i <= N; ++i ) {
            scanf ( "%d %d %d", &A[i].X, &A[i].Y, &A[i].Z ) ;
        }
        sort ( A + 1, A + N + 1 ) ;
        int sol = 1 ;
        for ( int i = 1; i <= N; ++i ) {
            best[i] = 1 ;
            for ( int j = i - 1; j ; --j ) {
                if ( A[j].Y < A[i].Y && A[j].Z < A[i].Z && best[i] <= best[j] ) {
                    best[i] = best[j] + 1;
                }
                if ( sol < best[i] ) {
                    sol = best[i] ;
                }
            }
        }
        printf ( "%d\n", sol ) ;
    }

    return 0 ;
}