Cod sursa(job #1157240)

Utilizator span7aRazvan span7a Data 28 martie 2014 12:41:26
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<cstdio>
#define M -2000000000
#include<algorithm>
#include<cstring>
using namespace std;
FILE *f=fopen("cutii.in","r");
FILE *g=fopen("cutii.out","w");
struct cut
{
    int x,y,z;
};
cut L[3501];
int aux[3501],perm[3501],nr,n,k,maxim;
int cmp(cut a,cut b)
{
    if(a.x>b.x&&a.y>b.y&&a.z>b.z)return 1;
    return 0;
}
bool cmp1(cut a,cut b)
{
    if(a.x>b.x)return false;
     else
          {

           if(a.x==b.x)
               {
                  if(a.y>b.y) return false;
                    else
                      {
                       if(a.y==b.y)
                              {
                                 if(a.z>b.z) return false;
                                else return true;
                              }
                      }
               }
          }
}
int scm()
{
    int i,j;
    int maxx;
    maxx=M;
    for(i=1;i<=k;i++)
    {
        aux[i]=1;
          for(j=i-1;j>=1;j--)
            if(cmp(L[i],L[j])&&aux[j]>aux[i]-1)
            {
                aux[i]=aux[j]+1;
            }
       if(aux[i]>maxx)maxx=aux[i];
    }
    fprintf(g,"%d\n",maxx);
}
int main()
{
    int i,i1,j,maxx;
    fscanf(f,"%d%d",&k,&n);
    for(i=1;i<=n;i++)
    {

        for(j=1;j<=k;j++)
        {
        nr++;
        fscanf(f,"%d%d%d",&L[j].x,&L[j].y,&L[j].z);
        }
        sort(L+1,L+k+1,cmp1);
        scm();
    }

    return 0;
}