plakatowanie.java

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
This commit is contained in:
Arkadiusz Charliński 2021-11-29 04:46:01 +01:00
parent db164fe7a6
commit 87f735d651

37
plakatowanie Normal file
View File

@ -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<Integer> 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);
}
}