#include #include #include using namespace std; #define MAXK 200 int Hor[200]; int Ver[200]; int MyMin(int a, int b) { return (a < b) ? a : b; } int main() { int n; scanf("%d", &n); for(int c = 0; c < n; c++) { int k; scanf("%d", &k); for(int i = 0; i < k; i++) { scanf("%d", Hor + i); } for(int i = 0; i < k; i++) { scanf("%d", Ver + i); } sort(Hor, Hor + k); sort(Ver, Ver + k); /*for(int i = 0; i < k; i++) { printf("%d", Hor[i]); }*/ int max = 0; for(int i = 0; i < k; i++) { for(int j = 0; j < k; j++) { max += MyMin(Hor[i], Ver[j]); } } int min = 0; int i = k - 1; int j = k - 1; while((i >= 0) && (j >= 0)) { if(Hor[i] == Ver[j]) { min += Hor[i]; i--; j--; } else if(Hor[i] > Ver[j]) { min += Hor[i]; i--; } else { min += Ver[j]; j--; } } while(i >= 0) { min += Hor[i--]; } while(j >= 0) { min += Ver[j--]; } printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", min, max); } return 0; }