Cod sursa(job #333284)

Utilizator marinMari n marin Data 22 iulie 2009 09:55:13
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
#include<algorithm>
#define DIM 4000

using namespace std;
struct pct {
	int x;
	int y;
	int z;
};

pct V[DIM];
int X[DIM];
int L[DIM];

int i,t,N,TT,m,p,u,mid,poz,mx,j;

int cmp(pct a, pct b) {
	return a.x<b.x;
}

int main(){
	FILE *f = fopen("cutii.in","r");
	FILE *g = fopen("cutii.out","w");
	fscanf(f,"%d %d",&N, &TT);
	for (t=1;t<=TT;t++) {
		for (i=1;i<=N;i++) {
			fscanf(f, "%d %d %d", &V[i].x, &V[i].y, &V[i].z);
		}
		sort(V+1,V+N+1,cmp);
		
		L[1] = 1;m=0;
		for (i=2;i<=N;i++) {
			mx = 0;
			poz = 0;
			for (j=1;j<i;j++)
				if (V[j].y<V[i].y && V[j].z<V[i].z && mx<L[j]) {
					mx = L[j];
					poz = j;
				}
			L[i] = L[poz]+1;
			if (L[i]>m)
				m = L[i];
		}
		/*
		X[1] = 1; m = 1;
		for (i=2;i<=N;i++) {
			p = 1; u = m;
			while (p<=u) {
				mid = p+(u-p)/2;
				if (V[X[mid]].y > V[i].y && V[X[mid]].z > V[i].z)
					p = mid + 1;
				else
					u = mid - 1;
			}
	
			if (p>u) {
				if (p>m)
					m++;
				X[p] = i;
				//T[i] = X[p-1];
			}
	
		}
		*/
		fprintf(g,"%d\n",m);
		
		
		
		
		
	}
	fclose(f);
	fclose(g);
	
	return 0;
}