Cod sursa(job #868530)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 31 ianuarie 2013 10:38:53
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

#define Nmax 3501

int N, T, maxim, k , nr = 1;

typedef struct cutie{

    int l;
    int L;
    int h;
};

cutie v[Nmax];
int best[Nmax];

bool functie(cutie x, cutie y){

    if(x.l < y.l)
        return 1;

    return 0;
}

inline int compara(cutie x, cutie y){

    if(x.L < y.L  && x.h < y.h)
        return 1;

    return 0;
}

void dinamica(){

    maxim = 0;

    for(int i = 1; i <= N; ++i){

        best[i] = 0;

        for(int j = i; j >= 1; --j)
            if(compara(v[j], v[i]) && best[j] + 1 > best[i])
                best[i] = best[j] + 1;

        if(best[i] > maxim)
            maxim = best[i];
    }

    printf("%d\n", maxim+1);
}

void rezolva(){


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

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

    for(; T; T--){

        for(int i = 1; i <= N; ++i)
            scanf("%d %d %d", &v[i].l, &v[i].L, &v[i].h);

        //sort(v+1, v+N+1, functie);

        dinamica();
    }
}


int main(){

    rezolva();

    return 0;
}