Αρχική > 27ος ΠΔΠ

27ος ΠΔΠ Καμπ (juniors)
Ασανσέρ (elev2)

Ένας ανελκυστήρας χωράει το πολύ δύο άτομα μέγιστου βάρους \(B\) κιλών (και οι δύο μαζί). Στο ισόγειο, περιμένουν \(N\) άτομα να χρησιμοποιήσουν τον ανελκυστήρα για να ανέβουν στον τελευταίο όροφο. Ευτυχώς, γνωρίζουμε τα βάρη \(W_i\) όλων τους.

Γράψτε ένα πρόγραμμα που να διαβάζει αυτά τα δεδομένα και να βρίσκει το ελάχιστο πλήθος διαδρομών που πρέπει να κάνει ο ανελκυστήρας, για να μεταφερθούν όλα τα άτομα. Θεωρήστε ότι ο ανελκυστήρας ξεκινάει από το ισόγειο και ότι μία διαδρομή συμπεριλαμβάνει το ανέβασμα και το κατέβασμα του (άδειου) ανελκυστήρα.

Αρχεία Εισόδου (elev2.in):

Η πρώτη γραμμή της εισόδου θα περιέχει δύο φυσικούς αριθμούς \(N\) και \(B\), χωρισμένους μεταξύ τους με ένα κενό διάστημα: το συνολικό πλήθος των ατόμων και το μέγιστο βάρος που επιτρέπει ο ανελκυστήρας. Η δεύτερη γραμμή της εισόδου θα περιέχει τους \(N\) φυσικούς αριθμούς \(W_i\), χωρισμένους μεταξύ τους με ένα κενό διάστημα: τα βάρη των ατόμων που περιμένουν.

Αρχεία Εξόδου (elev2.out):

Η έξοδος πρέπει να αποτελείται από ακριβώς μία γραμμή που να περιέχει ακριβώς ένα φυσικό αριθμό, το ελάχιστο πλήθος διαδρομών που πρέπει να κάνει ο ανελκυστήρας.

Παράδειγμα Αρχείου Εισόδου - Εξόδου:

elev2.in elev2.out
10 150
114 57 67 70 93 99 92 114 45 90
7

Εξήγηση παραδείγματος: Ο ανελκυστήρας μπορεί να κάνει \(7\) διαδρομές, μεταφέροντας π.χ. κατά σειρά ένα ή δύο άτομα, με συνολικό βάρος \(93\), \(114\), \(45+92\), \(114\), \(70+67\), \(99\), \(90+57\). Δεν είναι δυνατό να μεταφερθούν αυτά τα άτομα με λιγότερες από \(7\) διαδρομές.

Περιορισμοί

  • \(1 \leq N \leq 1.000.000\).
  • \(1 \leq B \leq 1.000.000\).
  • \(1 \leq W_i \leq B\).
  • Όριο χρόνου εκτέλεσης: \(1\) sec.
  • Όριο μνήμης: \(64\) MB.