#include #include #define FOR(i,a,b) for(int i = (a); i < (b); i++) using namespace std; int fw[100007]; int rw[100007]; int main(){ int n; cin >> n; FOR(j,0,n){ int k; cin >> k; int f[k],r[k]; FOR(i,0,k)cin >> f[i]; FOR(i,0,k)cin >> r[i]; FOR(i,0,100007)fw[i] = rw[i] = 0; sort(f, f + k); sort(r, r + k); int c = 0, q = 0; FOR(i,0,k){ if(c < f[i]){ int val = k - i; FOR(z,c,f[i]){ fw[z] = val; } c = f[i]; } } FOR(i,0,k){ if(q < r[i]){ int val = k - i; FOR(z,q,r[i]){ rw[z] = val; } q = r[i]; } } int max = 0, min = 0; FOR(i,0,k){ max += rw[i] * fw[i]; } int a = k-1, b = k-1; while(a >= 0 && b >= 0){ if(f[a] == r[b]){ min += f[a]; a--; b--; }else if(f[a] > r[b]){ min += f[a]; a--; }else{ min += r[b]; b--; } } while(a >= 0){ min += f[a]; a--; } while(b >= 0){ min += r[b]; b--; } cout << "Minimalni budova obsahuje " << min << " kostek, maximalni " << max << " kostek.\n"; } return 0; }