Cod sursa(job #1247089)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 22 octombrie 2014 07:12:33
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <algorithm>
using namespace std;
#define nMax 3505
struct Cutie
{
    int x, y, z;
};
Cutie C[nMax];
int DP[nMax];
int N,T,BEST;
int cmp(Cutie a,Cutie b)
{
    if(a.x>b.x)
    return a.x<b.x;
    else if(a.x<b.x)
    return a.x>b.x;
    else if(a.x==b.x&&a.y>b.y)
    return a.y<b.y;
    else if(a.x==b.x&&a.y<b.y)
    return a.y>b.y;
    else if(a.x==b.x&&a.y==b.y&&a.z>b.z)
    return a.z<b.z;
    else if(a.x==b.x&&a.y==b.y&&a.z<b.z)
    return a.z>b.z;
}
int main()
{
    ifstream f("cutii.in");
    ofstream g("cutii.out");
    f>>N>>T;
    while(T)
    {
        T--;
        for(int i=0;i<N;++i)
            f>>C[i].x>>C[i].y>>C[i].z;
        sort(C,C+N,cmp);
        BEST=1;
        for(int i=0;i<N;++i)
        {
            DP[i] = 1;
            for(int j=0;j<i;++j)
                if((C[i].x<C[j].x&&C[i].y<C[j].y&&C[i].z<C[j].z)&&DP[j]+1>DP[i])
                    DP[i]=DP[j]+1;

            BEST=max(BEST, DP[i]);
        }

        g<<BEST<<"\n";
    }
    return 0;
}