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