import java.io.InputStreamReader; import java.util.Scanner; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author hulata */ public class Stavitel { int sirka; int[] front; int[] right; int minimum; int maximum; public static void main(String[] args){ Stavitel v = new Stavitel(); v.start(); } private void start() { Scanner in = null; try { in = new Scanner(new InputStreamReader(System.in)); int pocetTestov = in.nextInt(); for (int i = 0; i < pocetTestov; i++) { sirka = in.nextInt(); front = new int[sirka]; right = new int[sirka]; for (int j = 0; j < sirka; j++) { front[j]=in.nextInt(); } for (int j = 0; j < sirka; j++) { right[j]=in.nextInt(); } ries(); vypis(); } }catch (Exception e) { e.printStackTrace(); }finally{ if(in!=null){ in.close(); } } } private void vypis() { System.out.println("Minimalni budova obsahuje "+minimum+" kostek, maximalni "+maximum+" kostek."); } private void ries() { maximum=0; for (int i = 0; i < sirka; i++) { maximum+=sirka*front[i]; } for (int i = 0; i < sirka; i++) { int pocetVoVyske; int vyska = right[i]; /*pocetVoVyske = dajPocetPrednychVoVyske(vyska); while(pocetVoVyske!=0){ maximum-=pocetVoVyske; vyska++; pocetVoVyske = dajPocetPrednychVoVyske(vyska); }*/ pocetVoVyske = dajPocetNad(vyska); maximum-=pocetVoVyske; } /* int pocetFront =0; int pocetRight = 0; for (int i = 0; i < sirka; i++) { pocetFront += front[i]; pocetRight += right[i]; } if(pocetFront>pocetRight){ minimum = pocetFront; }else{ minimum = pocetRight; }*/ minimum = 0; boolean[] pouzite = new boolean[sirka]; int[][] doska = new int[sirka][sirka]; for (int i = 0; i < sirka; i++) { for (int j = 0; j < sirka; j++) { if(front[i]==right[j]){ doska[i][j]=front[i]; minimum+=front[i]; pouzite[j]=true; break; } } } for (int i = 0; i < sirka; i++) { if(pouzite[i])continue; for (int j = 0; j < sirka; j++) { if(front[j]==right[i]){ doska[j][i]=front[j]; minimum+=front[j]; break; } } } } public int dajPocetPrednychVoVyske(int vyska) { int vys =0; for (int i = 0; i < sirka; i++) { if(front[i]-1>=vyska){ vys++; } } return vys; } public int dajPocetNad(int vyska) { int vys=0; for (int i = 0; i < sirka; i++) { if(front[i]-1>=vyska){ vys+=(front[i])-vyska; } } return vys; } }