Cod sursa(job #380451)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 6 ianuarie 2010 10:32:56
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<fstream>
#define inf "cutii.in"
#define outf "cutii.out"
#define NMax 3501
using namespace std;

fstream f(inf,ios::in),g(outf,ios::out);

int N,T;

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

cutie c[NMax];

bool rule(cutie a,cutie b)
{
if(a.z>b.z)return true;
else if(a.z==b.z)
    {
    if(a.y>b.y)return true;
    else if(a.y==b.y)
        {
        if(a.x>b.x)return true;
        else return false;
        }
    return false;
    }
return false;
}

bool incape(cutie a,cutie b)
{
if( a.x<b.x && a.y<b.y && a.z<b.z ) return true;
return false;
}

void Rezolva()
{
int best[NMax]={};
int max=1;
sort(c+1,c+N+1,rule);
best[1]=1;
for(int i=2;i<=N;i++)
    {
    best[i]=1;
    for(int j=1;j<i;j++)
        if( incape(c[i],c[j]) && best[i]<best[j]+1 )
            {
            best[i]=best[j]+1;
            if(max<best[i])max=best[i];
            }
    }
g<<max<<"\n";
}

void Citire()
{
f>>N>>T;
for(int i=1;i<=T;i++)
    {
    for(int j=1;j<=N;j++)f>>c[j].x>>c[j].y>>c[j].z;
    Rezolva();
    }
}

int main()
{
Citire();
f.close();
g.close();
return 0;
}