Cod sursa(job #1143262)

Utilizator MorganMatthew Watsky Morgan Data 15 martie 2014 11:26:22
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
int n,q,lung[4000];
struct co{ int x,y,z;};
co v[4000];

int ord(co i,co j)
{
    if(i.x==j.x)
        if(i.y==j.y)
            return i.z<j.z;
        else
            return i.y<j.y;
    return i.x<j.x;
}

void afisare()
{
    int i;
    for(i=1;i<=n;i++)
        out<<v[i].x<<' '<<v[i].y<<' '<<v[i].z<<'\n';
    out<<'\n';
}

void citire()
{
    int i;
    for(i=1;i<=n;i++)
        in>>v[i].x>>v[i].y>>v[i].z;
}

int verificare(int i,int j)
{
    if(v[i].x <= v[j].x && v[i].y <= v[j].y && v[i].z <= v[j].z)
        return 1;
    return 0;
}

void raspuns()
{
    int i,j,max=0;
    citire();
    sort(v+1,v+n+1,ord);
    lung[n]=1;
    for(i=n-1;i>=1;i--)
    {
        max=0;
        lung[i]=1;
        for(j=i+1;j<=n;j++)
            if(verificare(i,j))
                if(lung[j]>max)
                    max=lung[j];
        lung[i]=max+1;
    }
    max=0;
    for(i=1;i<=n;i++)
        if(max<lung[i])
            max=lung[i];
    out<<max;
    out<<'\n';
}

int main ()
{
    int i;
    in>>n>>q;
    for(i=1;i<=q;i++)
        raspuns();
}