From 87f735d651dc9afeb2b836508ee58a3933c20eb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20Charli=C5=84ski?= Date: Mon, 29 Nov 2021 04:46:01 +0100 Subject: [PATCH] plakatowanie.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Program wczyta ze standardowego wejścia opisy budynków, wyznaczy minimalną liczbę plakatów potrzebnych do całkowitego pokrycia ich północnych ścian, wypisze wynik na standardowe wyjście. Budynki są ze sobą połączone. Dane wpisujemy według przykładu: 3 1 4 2 6 1 2 --- plakatowanie | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 plakatowanie diff --git a/plakatowanie b/plakatowanie new file mode 100644 index 0000000..f44ceb9 --- /dev/null +++ b/plakatowanie @@ -0,0 +1,37 @@ +import java.util.Scanner; +import java.util.List; +import java.util.ArrayList; + +public class plakatowanie{ + + public static void main(String[] args){ + + Scanner in = new Scanner(System.in); + System.out.println("Number of buildings: "); + int liczba_budynkow = in.nextInt(); + System.out.println("buildings: "); + int budynki[][] = new int[liczba_budynkow][2]; + + for (int i = 0; i < liczba_budynkow;i++){ + for (int j = 0; j < 2; j++){ + budynki[i][j] = in.nextInt(); + } + } + + List plakaty = new ArrayList<>(); + int wynik = 0; + + + for (int i = 0; i < liczba_budynkow; i++) { + while ((plakaty.size() > 0) && (plakaty.get(plakaty.size()-1) > budynki[i][1])){ + plakaty.remove(plakaty.size()-1); + } + + if ((plakaty.size() == 0) || (plakaty.get(plakaty.size()-1) < budynki[i][1])){ + plakaty.add(budynki[i][1]); + wynik+=1; + } + } + System.out.println(wynik); + } +} \ No newline at end of file