Pagini recente » Cod sursa (job #1944033) | Cod sursa (job #1785517) | Cod sursa (job #20508) | Cod sursa (job #111004) | Cod sursa (job #249911)
Cod sursa(job #249911)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int a, b, c;
} Cutie;
int N;
Cutie cs[3500];
int ms[3500];
int ccmp(const void *_x, const void *_y) {
Cutie *x = (Cutie*)_x, *y = (Cutie*)_y;
if ((x->a == y->a) && (x->b == y->b)) {
return (x->c - y->c);
} else if (x->a == y->a) {
return (x->b - y->b);
}
return (x->a - y->a);
}
int fits(int i, int j) {
return ((cs[i].a < cs[j].a) && (cs[i].b < cs[j].b) && (cs[i].c < cs[j].c));
}
void swap(int *x, int *y) {
int aux = *x;
*x = *y;
*y = aux;
}
int calcMs() {
int m, i, j, M;
ms[0] = 1;
M = 1;
for (i = 1; i < N; ++i) {
m = 0;
for (j = 0; j < i; ++j) {
if (fits(j, i) && (ms[j] > m))
m = ms[j];
}
ms[i] = m+1;
if (m+1 > M)
M = m+1;
}
return M;
}
int main(int argc, char *argv[]) {
int T, i, m;
FILE *fi = fopen("cutii.in", "r");
fscanf(fi, "%d %d", &N, &T);
FILE *fo = fopen("cutii.out", "w");
while (T--) {
for (i = 0; i < N; ++i) {
fscanf(fi, "%d %d %d", &(cs[i].a), &(cs[i].b), &(cs[i].c));
if (cs[i].a > cs[i].b)
swap(&(cs[i].a), &(cs[i].b));
if (cs[i].a > cs[i].c)
swap(&(cs[i].a), &(cs[i].c));
if (cs[i].b > cs[i].c)
swap(&(cs[i].b), &(cs[i].c));
}
qsort(cs, N, sizeof(cs[0]), ccmp);
m = calcMs();
/* for (i = 0; i < N; ++i)
printf("%d %d %d\n", cs[i].a, cs[i].b, cs[i].c);
printf("\n");
printf("%d\n\n", m); */
fprintf(fo, "%d\n", m);
}
fclose(fo);
fclose(fi);
return 0;
}