Cod sursa(job #1976530)

Utilizator robx12lnLinca Robert robx12ln Data 3 mai 2017 17:01:54
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n, T, poz[3505], D[3505], sol;
struct cutie{
    int X;
    int Y;
    int Z;
} v[3505];
inline bool cmp( int i, int j ){
    if( v[i].X > v[j].X )
        return false;
    else{

        if( v[i].X == v[j].X ){

            if( v[i].Y > v[j].Y )
                return false;
            else{

                if( v[i].Y == v[j].Y ){

                    if( v[i].Z > v[j].Z )
                        return false;
                    else
                        return true;

                }else
                    return true;

            }

        }else
            return true;

    }
}
inline bool ok( int i, int j ){// j sa intre in i
    if( v[j].X < v[i].X && v[j].Y < v[i].Y && v[j].Z < v[i].Z )
        return true;
    return false;
}
int main(){
    fin >> n >> T;
    for( int t = 1; t <= T; t++ ){
        for( int i = 1; i <= n; i++ ){
            fin >> v[i].X >> v[i].Y >> v[i].Z;
            poz[i] = i;
        }
        sort( poz + 1, poz + n + 1, cmp );
        sol = 0;
        for( int i = 1; i <= n; i++ ){
            D[i] = 1;
            for( int j = 1; j < i; j++ ){
                if( ok( poz[i], poz[j] ) == true && D[i] < D[j] + 1 )
                    D[i] = D[j] + 1;
            }
            sol = max( sol, D[i] );
        }
        fout << sol << "\n";
    }
    return 0;
}