Cod sursa(job #329975)

Utilizator DraStiKDragos Oprica DraStiK Data 8 iulie 2009 12:38:35
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <algorithm>
#define DIM 3505
using namespace std;

struct cutie {int x,y,z;} a[DIM];
int best[DIM];
int t,n,maxim;

void read ()
{
    int i;
    for (i=1; i<=n; ++i)
        scanf ("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
}

int cmp (cutie a,cutie 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);
}

int max (int a,int b)
{
    if (a>b)
        return a;
    return b;
}

void solve ()
{
    int i,j;
    maxim=best[1]=1;
    for (i=2; i<=n; ++i)
    {
        for (j=best[i]=1; j<i; ++j)
            if (a[j].y<a[i].y && a[j].z<a[i].z)
                best[i]=max (best[i],best[j]+1);
        maxim=max (maxim,best[i]);
    }
    printf ("%d\n",maxim);
}

int main ()
{
    freopen ("cutii.in","r",stdin);
    freopen ("cutii.out","w",stdout);
    int i;
    scanf ("%d%d",&n,&t);
    for (i=1; i<=t; ++i)
    {
        read ();
        sort (a+1,a+n+1,cmp);
        solve ();
    }
    return 0;
}