Cod sursa(job #1132930)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 4 martie 2014 09:03:23
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <algorithm>
#include <fstream>

using namespace std;

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

struct cutie
{
    int x,y,z;
};

cutie v[3501];
int d[3501];

int cmp(cutie c1, cutie c2)
{
    if(c1.x < c2.x)
        return 1;
    else if(c1.x == c2.x)
        if(c1.y < c2.y)
            return 1;
        else if(c1.y == c2.y)
            return c1.z < c2.z;
    return 0;
}

int cuibarit(cutie c1, cutie c2)
{
    return (c1.x < c2.x && c1.y < c2.y && c1.z < c2.z);
}

int main()
{
    int n,t,i,j,k,x,y,z,maxim,maxc;
    in>>n>>t;
    d[n] = 1;

    for(i = 1; i <= t; i++)
    {
        maxim = 1;
        for(j = 1; j <= n; j++)
        {
            in>>x>>y>>z;
            v[j] = (cutie){x,y,z};
        }
        sort(v + 1, v + n + 1, cmp);
        for(j = n - 1; j >= 1; j--)
        {
            maxc = 0;
            for(k = j + 1; k <= n; k++)
                if(cuibarit(v[j], v[k]) && maxc < d[k])
                    maxc = d[k];
            d[j] = 1 + maxc;

            if(maxim < 1 + maxc)
                maxim = 1 + maxc;
        }

        out<<maxim<<'\n';
    }
    return 0;
}