import acm2014.Validate; 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)); while(in.hasNextLine()){ 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); } } 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; } } public int dajPocetPrednychVoVyske(int vyska) { int vys =0; for (int i = 0; i < sirka; i++) { if(front[i]-1>=vyska){ vys++; } } return vys; } }