Cod sursa(job #1018262)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 29 octombrie 2013 09:58:30
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin( "cutii.in" );
ofstream cout( "cutii.out" );

const int MAXN = 3501;

struct bo{
    short x, y, z;
} box[MAXN];

struct ClassComp {
    inline bool operator () (const bo &a, const bo &b) const {
        return a.z < b.z;
    }
};

short N, T, Ans, dp[MAXN];

inline bool fits(const bo &a, const bo &b) {
    return a.x > b.x && a.y > b.y;
}

inline void Read() {
    for(int i = 1 ; i <= N ; ++ i)
        cin >> box[i].x >> box[i].y >> box[i].z;
}

inline void Solve() {
    sort(box + 1, box + N + 1, ClassComp());
    for(int i = 1 ; i <= N ; ++ i) {
        dp[i] = 1;
        for(int j = 1 ; j < i ; ++ j)
            if(dp[i] < dp[j] + 1 && fits(box[i], box[j]))
                dp[i] = dp[j] + 1;
    }
    cout << *max_element(dp+1, dp+N+1) << '\n';
}

inline void Clear() {
    for(int i = 1 ; i <= N ; ++ i)
        dp[i] = 0;
    Ans = 0;
}

int main() {
    for(cin >> N >> T ; T ; -- T) {
        Read();
        Solve();
        Clear();
    }
    cin.close();
    cout.close();
    return 0;
}