COCI-14 (2014) - Γύρος #3 - 3 (Silueta)

View as PDF

Submit solution

Points: 35 (partial)
Time limit: 0.2s
Memory limit: 32M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Silueta

Ο κύριος ήρωας αυτού του έργου, ο ζωγράφος Vincent, πέρασε μεγάλο μέρος της νιότης του ταξιδεύοντας σε όλο τον κόσμο. Αξιοθέατα από πολυάριθμα ταξίδια αποτέλεσαν συχνά την έμπνευση για τα έργα τέχνης του, τα οποία σήμερα είναι ιδιαίτερα επαινετικά. Σε μια περίπτωση, ο Βίνσεντ βρέθηκε σε μια μητρόπολη γεμάτη ουρανοξύστες και έτσι άρχισε να δουλεύει αμέσως, μεθυσμένος από το υπέροχο θέαμα. Για διάφορους λόγους, ακατανόητους για έναν μέσο προγραμματιστή, ο Βίνσεντ αποφάσισε να ζωγραφίσει μόνο τις σιλουέτες των ουρανοξυστών που βλέπονταν μπροστά του. Δυστυχώς, μια εβδομάδα αφότου τελείωσε αυτό το αριστούργημα, ο πίνακας πήρε αυθόρμητα φωτιά.

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

Από τη δική σας οπτική γωνία, οι ουρανοξύστες του Vincent είναι ορθογώνια των οποίων οι πλευρές είναι παράλληλες ως προς τους άξονες συντεταγμένων και με τη μία πλευρά που βρίσκεται στην τετμημένη. Μέρος της τετμημένης στην εικόνα θα πρέπει να εμφανίζεται με τους χαρακτήρες "∗", οι σιλουέτες των ουρανοξυστών με "#" και να γεμίζει την υπόλοιπη εικόνα με ".". Το αριστερό άκρο της εικόνας πρέπει να ξεκινά με έναν ουρανοξύστη, ενώ το δεξιό άκρο της εικόνας πρέπει να τελειώνει με έναν ουρανοξύστη. Επιπλέον, για να επαληθεύσουν τα αποτελέσματα που πήραν οι μαθηματικοί, εξάγουν την περίμετρο της δεδομένης σιλουέτας χωρίς να υπολογίζουν τις πλευρές που βρίσκονται στην τετμημένη.

Είσοδος

Η πρώτη γραμμή εισόδου περιέχει έναν ακέραιο αριθμό N\;(1 \leq N \leq 10\,000), τον αριθμό των ουρανοξυστών.

Κάθε μία από τις ακόλουθες N γραμμές περιέχει τρεις ακέραιους αριθμούς L_i,\;R_i και H_i\;(1 \leq L_i,\;R_i,\;H_i \leq 1\,000,\;3 \leq R_i - L_i \leq 1\,000) που περιγράφουν τη θέση του i-οστού ουρανοξύστη. Αυτός ο ουρανοξύστης, σε ένα καρτεσιανό σύστημα συντεταγμένων, θεωρείται ορθογώνιο με την κάτω αριστερή γωνία του σε (L_i,\;0) και την επάνω δεξιά γωνία σε (R_i,\;H_i).

Έξοδος

Η πρώτη γραμμή εξόδου πρέπει να περιέχει την περίμετρο της σιλουέτας του Vincent.
Οι επόμενες h+1 γραμμές, όπου το h+1 είναι το ύψος του υψηλότερου ουρανοξύστη, πρέπει να περιέχουν το σχέδιο του Vincent όπως περιγράφεται στην εργασία.

Βαθμολογία

Σε περιπτώσεις δοκιμής αξίας 50% των συνολικών πόντων, θα ισχύει (1 \leq N \leq 100)\;(1 \leq L_i,\;R_i,\;H_i \leq 100).

Εάν το πρόγραμμα τυπώνει τη σωστή περίμετρο, αλλά τη λάθος εικόνα, θα λάβει το 40% των πόντων για αυτήν την περίπτωση δοκιμής.

Εάν το πρόγραμμα τυπώνει λάθος περίμετρο, αλλά τη σωστή εικόνα, θα λάβει το 60% των πόντων για αυτήν την περίπτωση δοκιμής.

Εάν μπορείτε να σχεδιάσετε την εικόνα, αλλά δεν μπορείτε να υπολογίσετε την περίμετρο, τυπώστε έναν ακέραιο αριθμό στην πρώτη γραμμή και, στη συνέχεια, τυπώστε την εικόνα.

Παραδείγματα

input

3
1 5 4
7 11 3
9 13 5

output

28
........####
####....#..#
#..#..###..#
#..#..#....#
#..#..#....#
************
Επεξήγηση του 1ου παραδείγματος:

Το μπλε χρώμα υποδηλώνει τη σιλουέτα των ουρανοξυστών (χαρακτήρας "#"), ενώ το κίτρινο είναι το τμήμα της τετμημένης που βρίσκεται στον πίνακα του Vincent (χαρακτήρας "*").

coci14c3-figure.svg

input

6
2 8 7
5 13 5
2 18 3
23 26 5
20 31 7
21 30 10

output

61
...................#########.
...................#.......#.
...................#.......#.
######............##.......##
#....#............#.........#
#....######.......#.........#
#.........#.......#.........#
#.........######..#.........#
#..............#..#.........#
#..............#..#.........#
*****************************

Comments

There are no comments at the moment.