Pagini recente » Cod sursa (job #3150775) | Cod sursa (job #458093) | Cod sursa (job #884518) | Cod sursa (job #742476) | Cod sursa (job #3707)
Cod sursa(job #3707)
#include <stdio.h>
#include <stdlib.h>
int comp(const void* a, const void* b)
{
int* v1 = ((int**)a)[0];
int* v2 = ((int**)b)[0];
if(v1[0] == v2[0])
{
if(v1[1] == v2[1])
{
return v1[2] - v2[2];
}
return v1[1] - v2[1];
}
return v1[0] - v2[0];
}
int getmax(int** v, int N)
{
int* m = new int [N];
int i, j;
for(i = 0; i < N; i++)
{
m[i] = 1;
for(j = 0; j < i; j++)
{
if(v[i][0] > v[j][0] && v[i][1] > v[j][1] && v[i][2] > v[j][2] && (m[j] + 1) > m[i])
{
m[i] = m[j] + 1;
}
}
}
return m[N - 1];
}
int main()
{
freopen("cutii.in", "rt", stdin);
freopen("cutii.out", "wt", stdout);
int N, T, j, i;
scanf("%d%d", &N, &T);
int** v = new int*[N];
for(i = 0 ; i < N; i++)
{
v[i] = new int [3];
}
for(j = 0; j < T; j++)
{
for(i = 0; i < N; i++)
{
scanf("%d%d%d", &v[i][0], &v[i][1], &v[i][2]);
}
qsort(v, N, sizeof(int**), comp);
printf("%d\n", getmax(v, N));
}
return 0;
}