Cod sursa(job #902436)

Utilizator noruIlies Norbert noru Data 1 martie 2013 14:15:29
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
 
int n,l[3501],poz[3501],v[3501],i,j;
typedef struct {int x,y,z;}CUTII;
CUTII c[3501];
void citire()
{
    for (i=1;i<=n;i++)
        f>>c[i].x>>c[i].y>>c[i].z;
}
 
void intersc(int &a, int &b)
{
    int aux; aux=a;a=b;b=aux;
}
int cmp (CUTII a, CUTII b)
{
	return (a.z<b.z);
}
/*
void bubble()
{
    int ok;
    do
    {
        ok=1;
        for (i=1;i<=n-1;i++)
        {
            if (cutii[3][i]>cutii[3][i+1])
            {
                ok=0;
                intersc(cutii[1][i],cutii[1][i+1]);
                intersc(cutii[2][i],cutii[2][i+1]);
                intersc(cutii[3][i],cutii[3][i+1]);
            }
        }
    }
    while (ok==0);
}
*/
//scm
void scm()
{
    int max,p;
    for (i=1;i<=n;i++) l[i]=1;
    for (i=n-1;i>=1;i--)
    {
        max=p=0;
        for (j=i+1;j<=n;j++)
			if (c[i].x<c[j].x)
				if (l[j]>max&&c[i].z<c[j].z&&c[i].y<c[i].y)
            {
                max=l[j];
                p=j;
            }
        poz[i]=p;
        l[i]=max+1;
    }
    max=0;
    for (i=1;i<=n;i++) if (l[i]>max) max=l[i];
    g<<max<<'\n';
}
 
int main()
{
    int t,l;
    f>>n>>t;
    for (l=1;l<=t;l++)
    {
        citire();
        sort(c+1,c+n+1,cmp);
        scm();
    }
    return 0;
}