Πρόσληψη Πιτσαδόρων
Ο Τάκης το πήρε τελικά απόφαση να προσλάβει εργαζόμενους. Μάλιστα, έχει βρει υποψήφιους πιτσαδόρους. Κάθε υποψήφιος μπορεί να προσληφθεί με το πολύ ένα είδος συμβολαίου: χάλκινο, ασημένιο ή χρυσό. Ο προϋπολογισμός του Τάκη του επιτρέπει να προσφέρει μέχρι χάλκινα, μέχρι ασημένια και μέχρι χρυσά συμβόλαια. Επιπλέον, ο ίδιος έχει φροντίσει να ισχύει ότι .
Ανάλογα με το συμβόλαιο που λαμβάνει ένας πιτσαδόρος αποδίδει διαφορετικά. Αν στον -οστο πιτσαδόρο προσφερθεί χάλκινο συμβόλαιο αυτός θα έχει απόδοση , αν του προσφερθεί ασημένιο θα έχει απόδοση και αν του προσφερθεί χρυσό θα έχει απόδοση . Για όλους τους υποψηφίους ισχύει ότι , δηλαδή όταν προσφέρουμε συμβόλαιο υψηλότερης βαθμίδας η απόδοση πάντα βελτιώνεται.
Προφανώς, ο Τάκης θέλει να μεγιστοποιήσει την συνολική απόδοση των πιτσαδόρων του, δηλαδή το άθροισμα των αποδόσεων τους. Παρόλα αυτά, είναι απαραίτητο να παραμείνει εντός προϋπολογισμού. Να βρείτε την μέγιστη συνολική απόδοση που μπορεί να πετύχει ο Τάκης, τηρώντας τα όρια που έχει θέσει για κάθε είδος συμβολαίου.
Πρόβλημα
Να γράψετε ένα πρόγραμμα σε μία από τις γλώσσες του ΠΔΠ (PASCAL, C, C++, JAVA) το οποίο θα διαβάζει τα δεδομένα εισόδου από το αρχείο hiring.in και θα εκτυπώνει τα αποτελέσματα στο αρχείο hiring.out.
Αρχεία εισόδου (hiring.in)
Η πρώτη γραμμή περιέχει τον αριθμό του υποπροβλήματος (βλ. παρακάτω). Η δεύτερη γραμμή περιέχει τέσσερις ακέραιους αριθμούς , , και , χωρισμένους ανά δύο με ένα κενό διάστημα: το πλήθος των υποψηφίων, το μέγιστο πλήθος χάλκινων συμβολαίων, το μέγιστο πλήθος ασημένιων συμβολαίων και το μέγιστο πλήθος χρυσών συμβολαίων. Ακολουθούν γραμμές καθεμία από τις οποίες αποτελείται από τρεις ακέραιους αριθμούς , και , χωρισμένους ανά δύο με ένα κενό διάστημα: την απόδοση του -οστου υποψηφίου αν του προσφερθεί χάλκινο, ασημένιο ή χρυσό συμβόλαιο, αντίστοιχα.
Αρχεία εξόδου (hiring.out)
Πρέπει να περιέχει μία μόνο γραμμή με έναν ακέραιο αριθμό: την μέγιστη συνολική απόδοση που μπορεί να πετύχει ο Τάκης αν προσφέρει μέχρι χάλκινα, μέχρι ασημένια και μέχρι χρυσά συμβόλαια.
Παράδειγμα αρχείων εισόδου - εξόδου:
Είσοδος:
1
5 3 1 1
3 6 8
1 1 2
4 9 12
3 5 7
9 9 9
Έξοδος:
31
Εξήγηση: Η καλύτερη επιλογή πιτσαδόρων είναι να δώσουμε ασημένιο συμβόλαιο στον πρώτο (απόδοση ), χάλκινο στον δεύτερο (απόδοση ), χρυσό στον τρίτο (απόδοση ), χάλκινο στον τέταρτο (απόδοση ) και χάλκινο στον πέμπτο (απόδοση ). Η συνολική απόδοση έτσι είναι .
Υποπροβλήματα:
- (8 βαθμοί)
- (24 βαθμοί)
- (3 βαθμοί)
- (12 βαθμοί) (οι αποδόσεις των χάλκινων συμβολαίων είναι όλες ίσες), (οι αποδόσεις των ασημένιων συμβολαίων βρίσκονται σε αύξουσα σειρά) και (οι αποδόσεις των χρυσών συμβολαίων βρίσκονται σε φθίνουσα σειρά)
- (20 βαθμοί)
- (33 βαθμοί) Δεν υπάρχουν περαιτέρω περιορισμοί
Περιορισμοί
Παρατηρήσεις
- Μορφοποίηση: Στην είσοδο αλλά και στην έξοδο, κάθε γραμμή τερματίζει με έναν χαρακτήρα
newline
. - Μέγιστος χρόνος εκτέλεσης: sec.
- Μέγιστη διαθέσιμη μνήμη: MB.
- Επικεφαλίδες στον πηγαίο κώδικα: Στην αρχή του πηγαίου κώδικά σας, θα πρέπει να χρησιμοποιήσετε τις παρακάτω επικεφαλίδες.
(* USER: username
LANG: PASCAL
TASK: hiring *)
για κώδικα σε PASCAL
/* USER: username
LANG: C
TASK: hiring */
για κώδικα σε C
/* USER: username
LANG: C++
TASK: hiring */
για κώδικα σε C++
/* USER: username
LANG: Java
TASK: hiring */
για κώδικα σε Java
Προσοχή: Η απάντηση μπορεί να υπερβαίνει το . Επίσης, φροντίστε να διαβάζετε την είσοδο και να εκτυπώνετε την έξοδο αποδοτικά, ειδικά αν μεταφράζετε σε C++ ή Java.
Comments