Cod sursa(job #868517)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 31 ianuarie 2013 10:27:22
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 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(){

    best[N]=1;
    maxim = 1;

    for(int i = N - 1 ; i >= 1; --i){

       best[i] = 1;

       for(int j = i + 1; j <= N; ++j)
           if(compara(v[i], v[j]) && best[i] < best[j] + 1){

             best[i] = best[j] + 1;

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

            }
    }

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

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;
}