#include void kocky(void); int main(void) { long n, i; scanf("%ld", &n); for (i = 1; i <= n; i++) kocky(); return 0; } void kocky(void) { long sirka, i; long spredu[100]; long zboku[100]; long min, max; scanf("%ld", &sirka); long naj1 = 0; long naj2 = 0; for (i = 0; i < sirka; i++) { scanf("%ld", &spredu[i]); naj1 = (naj1 < spredu[i]) ? spredu[i] : naj1; } for (i = 0; i < sirka; i++) { scanf("%ld", &zboku[i]); naj2 = (naj2 < zboku[i]) ? zboku[i] : naj2; } naj1 = (naj1 > naj2) ? naj1 : naj2; long poc1 = 0; long poc2 = 0; min = 0; max = 0; long najmax = naj1; while (najmax > 0) { poc1 = 0; poc2 = 0; for (i = 0; i < sirka; i++) { if (spredu[i] >= najmax) poc1++; if (zboku[i] >= najmax) poc2++; } max += (poc1 * poc2); najmax--; } while (naj1 >= 0) { poc1 = 0; poc2 = 0; for (i = 0; i < sirka; i++) { if (spredu[i] == naj1) poc1++; if (zboku[i] == naj1) poc2++; } poc1 = (poc1 > poc2) ? poc1 : poc2; min += naj1 * poc1; naj1--; } printf("Minimalni budova obsahuje %ld kostek, maximalni %ld kostek.\n", min, max); }