Cod sursa(job #1046055)

Utilizator razvan2006razvan brezulianu razvan2006 Data 2 decembrie 2013 17:11:31
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<stdio.h>
#include<vector>
#include<algorithm>

using namespace std;

typedef struct dim {
	int x, y, z;
};

int n, insert[3501], t;
vector<dim> G;

bool myFunction(dim a, dim b) {
	if (a.x < b.x) return true;
	else if (a.x == b.x && a.y < b.y) return true;
	else if (a.x == b.x && a.y == b.y && a.z < b.z) return true;

	return false;
}

int main () {
	freopen ("cutii.in", "rt", stdin);
	freopen ("cutii.out", "wt", stdout);
	
	scanf ("%d %d", &n, &t);
	
	for (int k = 0; k < t; k++) {
		G.clear();
		for (int i = 0; i < n; i++) insert[i] = 0;
		
		for (int i = 0; i < n; i++) {
			dim d;
			scanf ("%d%d%d", &d.x, &d.y, &d.z);
		
			G.push_back(d);
		}
		
		sort(G.begin(), G.end(), myFunction);
		
		int max = 0;
		insert[0] = 0;
		for (int i = 0; i < n; i++)
			for (int j = 0; j < i; j++)
				if (G[j].x < G[i].x && G[j].y < G[i].y && G[j].z < G[i].z && insert[j] + 1 > insert[i]) {
					insert[i] = insert[j] + 1;
					if (max < insert[i]) max = insert[i];
				}
				
		printf ("%d\n", max+1);
	}
	
	

	return 0;
}