#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(prom, a, b) for(int prom = (a); prom < (b); prom++) #define FORD(prom, a, b) for(int prom = (a); prom > (b); prom--) #define FORDE(prom, a, b) for(int prom = (a); prom >= (b); prom--) #define DRI(a) int a; scanf("%d ", &a); #define DRII(a, b) int a, b; scanf("%d %d ", &a, &b); #define RI(a) scanf("%d ", &a); #define RII(a, b) scanf("%d %d ", &a, &b); #define PB push_back #define MP make_pair #define ll long long #define ull unsigned long long #define MM(co, cim) memset((co), (cim), sizeof((co))) #define DEB(x) cerr << ">>> " << #x << " : " << x << endl; int A[107], B[107]; bool used[107]; int main () { DRI(N); while(N--) { DRI(K); FOR(i,0,K) RI(A[i]); FOR(i,0,K) RI(B[i]); MM(used, false); int mn = 0; int mx = 0; FOR(i,0,K) FOR(j,0,K) { mx += min(A[i],B[j]); } FOR(i,0,K) { mn += A[i]; } FOR(i,0,K) { bool has = false; FOR(j,0,K) { if(B[i] == A[j] && !used[j]) { has = true; used[j] = true; break; } } if(!has) mn += B[i]; } cout << "Minimalni budova obsahuje " << mn << " kostek, maximalni " << mx << " kostek." << endl; } return 0; }