Tehtäväsi on pakata n tavaraa laatikoihin. Jokaisessa laatikossa voi olla yksi tai kaksi tavaraa, ja lisäksi laatikon tavaroiden yhteispaino saa olla enintään x. Mikä on pienin mahdollinen laatikoiden määrä?
Esimerkiksi kun tavaroiden painot ovat [7,2,3,9] ja x=10, tarvitset ainakin 3 laatikkoa. Yksi ratkaisu on pakata yhteen laatikkoon tavarat, joiden painot ovat 7 ja 2, ja muut tavarat omiin laatikoihin.
Voit olettaa, että n on välillä 1 \dots 10^5 ja x on välillä 1 \dots 10^9. Jokaisen tavaran paino on enintään x.
Python
Toteuta tiedostoon boxes.py
funktio count
, jolle annetaan tavaroiden painot sekä painoraja x. Funktion tulee palauttaa tarvittava laatikoiden määrä.
def count(t,x): # TODO if __name__ == "__main__": print(count([1,2,3,4],10)) # 2 print(count([4,4,4,4],5)) # 4 print(count([7,2,3,9],10)) # 3 print(count([4,2,1,5,3],6)) # 3
Java
Toteuta tiedostoon Boxes.java
metodi count
, jolle annetaa tavaroiden painot sekä painoraja x. Funktion tulee palauttaa tarvittava laatikoiden määrä.
public class Boxes { public int count(int[] t, int x) { // TODO } public static void main(String[] args) { Boxes b = new Boxes(); System.out.println(b.count(new int[] {1,2,3,4}, 10)); // 2 System.out.println(b.count(new int[] {4,4,4,4}, 4)); // 4 System.out.println(b.count(new int[] {7,2,3,9}, 10)); // 3 System.out.println(b.count(new int[] {4,2,1,5,3}, 6)); // 3 } }