Cod sursa(job #1390390)

Utilizator Ionut228Ionut Calofir Ionut228 Data 17 martie 2015 00:19:16
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int N, T;
int maxim;
int dp[3505];

struct cutii
{
    int x, y, z;
};
cutii A[3505];

bool cmp(cutii A, cutii B)
{
    return (A.x < B.x || (A.x == B.x && A.y < B.y) || (A.x == B.x && A.y == B.y && A.z < B.z));
}

void scmax()
{
    dp[1] = 1;
    maxim = 1;
    for (int i = 2; i <= N; ++i)
    {
        dp[i] = 1;
        for (int j = 1; j < i; ++j)
            if (A[i].x > A[j].x && A[i].y > A[j].y && A[i].z > A[j].z && dp[i] < dp[j] + 1)
            {
                dp[i] = dp[j] + 1;
                if (dp[i] > maxim)
                    maxim = dp[i];
            }
    }
}

int main()
{
    fin >> N >> T;
    while (T--)
    {
        for (int i = 1; i <= N; ++i)
            fin >> A[i].x >> A[i].y >> A[i].z;
        sort(A + 1, A + N + 1, cmp);

        scmax();

        fout << maxim << '\n';
    }

    fin.close();
    fout.close();
    return 0;
}