// zoltan chivay // marigold // triss #include #include using namespace std; int min (int a, int b) { return a < b ? a : b; } void printTable (int * table, int s) { for (int y = 0; y < s; y++) { for (int x = 0; x < s; x++) { cout << table[s*y + x] << " "; } cout << endl; } } int sort (const void * a, const void * b) { int *x, *y; x = (int*)(a); y = (int*)(b); return *x - *y; } int main (int argc, char ** argv) { int n; cin >> n; for (int i = 0; i < n; i++) { int s; cin >> s; int * pX = new int [s]; int * pY = new int [s]; for (int j = 0; j < s; j++) { cin >> pX[j]; } for (int j = 0; j < s; j++) { cin >> pY[j]; } // compute max int max = 0; for (int x = 0; x < s; x++) for (int y = 0; y < s; y++) { max += min (pX[x], pY[y]); } // compute min int min = 0; qsort (pX, sizeof(int), s, sort); qsort (pY, sizeof(int), s, sort); for (int i = 0; i < s; i++) { min += pX[i] > pY[i] ? pX[i] : pY[i]; } cout << "Minimalni budova obsahuje " << min << " kostek, maximalni " << max << " kostek." << endl; } return 0; }