#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for(int i=a; i<=b; i++) #define PB push_back #define fi first #define se second #define make_pair #define PII pair #define SIZE(s) (int)(s).size() #define INF 987654321 #define ll long long //---------- int N; #define MAX 150 int M[MAX][MAX]; int Row[MAX],Col[MAX]; /* bool useRow[MAX], useCol[MAX]; void setRow(int v, int row){ FOR(i,0,N-1) if (Col[i] == v){ } FOR(i,0,N-1) if (R[i] == v){ M[row][i] = v; return ; } } void check_min(){ FOR(i,0,N-1){ //ideme hladat volnu L[i] if (!useRow[i]){ setRow( Row[i], i); useRow[i] = true; } } } */ int main(){ int q; scanf("%d",&q); while(q--){ scanf("%d", &N); FOR(i,0,N-1) FOR(j,0,N-1) M[i][j] = 0; FOR(i,0,N-1) scanf("%d", Row+i); FOR(i,0,N-1) scanf("%d", Col+i); /* FOR(i,0,N-1) useCol[i] = false; FOR(i,0,N-1) useRow[i] = false; check_min(); */ int small = -1; int suma = 0, sumb = 0; FOR(i,0,N-1) suma+= Row[i]; FOR(i,0,N-1) sumb+= Col[i]; small = max(suma, sumb); FOR(i,0,N-1) FOR(j,0,N-1) M[i][j] = min(Col[i], Row[j]); int best = 0; FOR(i,0,N-1) FOR(j,0,N-1) best+= M[i][j]; printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", small, best); } return 0; }