// 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; //cout << "s = " << s << endl; 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 xmin = 0; if (s == 1) xmin = (pX[i] >= pY[i]) ? pX[0] : pY[0]; else { qsort (pX, s, sizeof(int), sort); qsort (pY, s, sizeof(int), sort); for (int i = 0; i < s; i++) { xmin += pX[i] >= pY[i] ? pX[i] : pY[i]; //cout << "xmin += " << (pX[i] >= pY[i] ? pX[i] : pY[i]) << endl; } } cout << "Minimalni budova obsahuje " << xmin << " kostek, maximalni " << max << " kostek." << endl; } return 0; }