#include #include #include #include using namespace std; int myMin (int a, int b) { return a > b ? b : a; } int main(){ int n, k; scanf ("%d", &n); while (n--) { scanf ("%d", &k); int * pole1 = (int*)malloc(sizeof (int) * k), * pole2 = (int*)malloc(sizeof (int) * k); for (int i = 0; i < k; i++) { scanf ("%d", &(pole1[i])); } for (int i = 0; i < k; i++) { scanf ("%d", &(pole2[i])); } unsigned max = 0, min = 0; for (int i = 0; i < k; i++) { if (pole1[i] == 0) continue; for (int j = 0; j < k; j++) { max += myMin(pole1[i], pole2[j]); } } //qsort(pole1, sizeof(int), k, myComp); sort(pole1, pole1 + k); sort(pole2, pole2 + k); int pole2i = 0; for (int i = 0; i < k; i++, pole2i++) { min += pole1[i]; if (pole1[i] != pole2[pole2i]) min += pole2[pole2i]; } printf("Minimalni budova obsahuje %u kostek, maximalni %u kostek.\n", min, max); } return 0; }