Cod sursa(job #1197343)

Utilizator azkabancont-vechi azkaban Data 11 iunie 2014 19:06:21
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");

void sort(long left, long right, long A[],long B[],long H[])
{
  long i,j,pivot;
  i=left; j=right; pivot=A[(right+left)/2];
   do {
                 while (A[i]<pivot) ++i;
                 while (A[j]>pivot) --j;
                 if (i<=j ) {
                              swap(A[i],A[j]);
                              swap(B[i],B[j]);
                              swap(H[i],H[j]);
                              ++i;
                              --j;
                             }
               }
   while (i<=j);
   if (i<right) sort(i,right,A,B,H);
   if (j>left) sort(left,j,A,B,H);  
}

long n,maxim,t,A[5000],B[5000],D[5000],H[5000];
int main()
{
    cin>>n>>t;
for (int f=1;f<=t;++f) {
    for (int i=1;i<=n;++i) {
                            A[i]=0;
                            B[i]=0;
                            H[i]=0;
                            }
    for (int i=1;i<=n;++i) cin>>A[i]>>B[i]>>H[i];
                        
    sort(1,n,A,B,H);
    
    D[1]=1;
    for (int i=2;i<=n;++i){
                       maxim=0;
                       for (int j=1;j<i;++j){ 
                                         if (A[j]<A[i] && B[j]<B[i] && H[j]<H[i]) maxim=max(maxim,D[j]);
                                         D[i]=maxim+1;
                                         }
                          }
    maxim=0;
    for (int i=1;i<=n;i++) maxim=max(maxim,D[i]);
    cout<<maxim<<"\n"; 
                       }
    return 0;
}