#include #include #include #include #include #include #include #define REP(i, cnt) for (int i = 0; i < (cnt); i++) using namespace std; typedef long long int64; int a[128], b[128]; int compare_ints(const void* a, const void* b) // comparison function { int* arg1 = (int*) a; int* arg2 = (int*) b; if (*arg1 > *arg2) return -1; else if (*arg1 == *arg2) return 0; else return 1; } int main() { int inputcount; scanf("%d", &inputcount); REP(inp, inputcount) { int64 min = 0, max = 0; int n; scanf("%d", &n); REP(i, n) { scanf("%d", &a[i]); } REP(i, n) { scanf("%d", &b[i]); } std::qsort(a, n, sizeof(int), compare_ints); std::qsort(b, n, sizeof(int), compare_ints); /*REP(i, n) printf("%d ", a[i]); printf("\n"); REP(i, n) printf("%d ", b[i]); printf("\n");*/ REP(i, n) { REP(j, n) { if (a[j] == b[i] && i > j) { int x = b[j]; b[j] = b[i]; b[i] = x; } } } REP(i, n) { REP(j, n) { if (a[i] < b[j]) { max += a[i]; } else max += b[j]; } } /*REP(i, n) printf("%d ", a[i]); printf("\n"); REP(i, n) printf("%d ", b[i]); printf("\n");*/ REP(i, n) if (a[i] == b[i]) min += a[i]; else min += a[i]+b[i]; printf("Minimalni budova obsahuje %lld kostek, maximalni %lld kostek.\n", min, max); } return 0; }