Cod sursa(job #1654485)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 17 martie 2016 08:47:05
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

#define DIM 3503

const int INF = 100000;
int dp[DIM], hop;

struct cutie {
    int a, b, c;
} V[DIM], ram[DIM];

bool cmp(cutie x, cutie y);

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

    int N, T;

    scanf("%d %d\n", &N, &T);

    while(T) {
        --T;

        for(int i = 1; i <= N; ++i) {
            scanf("%d %d %d\n", &V[i].a, &V[i].b, &V[i].c);
        }

        sort(V + 1, V + 1 + N, cmp);

        memset(dp, INF, sizeof(dp));
        dp[N] = 1;

        hop = 1;
        ram[1] = V[N];

        int ans = 0;

        for(int i = N - 1; i > 0; --i) {
            for(int j = i + 1; j <= N; ++j) {
                if(V[i].a < V[j].a && V[i].b < V[j].b && V[i].c < V[j].c) {
                    dp[i] = max(dp[i], dp[j] + 1);
                }
            }

            ans = max(ans, dp[i]);
        }

        cout << ans << '\n';
    }

    return 0;
}

bool cmp(cutie x, cutie y) {
    if(x.a == y.a) {
        if(x.b == y.b) {
            return x.c < y.c;
        }

        return x.b < y.b;
    }

    return x.a < y.a;
}