COI-14 (2014) - 1 (CSS)

View as PDF

Submit solution

Points: 50 (partial)
Time limit: 5.0s
Memory limit: 256M

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

Τα δημοφιλή έγγραφα HTML έχουν ιεραρχική δομή. Αυτό σημαίνει ότι αποτελούνται από τα λεγόμενα στοιχεία που έχουν όνομα, συγκεκριμένα χαρακτηριστικά και μπορούν να περιέχουν άλλα στοιχεία. Σε αυτό το πρόβλημα εξετάζουμε έγγραφα που αποτελούνται μόνο από ένθετα στοιχεία div. Συγκεκριμένα, κάθε έγγραφο αποτελείται από γραμμές της παρακάτω μορφής:

<div id='name' class='class1 class2 … classK'> element beginning … element content </div> element end

Έτσι, ένα μεμονωμένο στοιχείο αποτελείται από μια γραμμή που υποδηλώνει την αρχή του, μια γραμμή που υποδηλώνει το τέλος του και ανάμεσα σε αυτές τις δύο γραμμές βρίσκεται το περιεχόμενο του στοιχείου που μπορεί είτε να είναι κενό είτε να αποτελείται από μια σειρά άλλων στοιχείων που μπορεί και πάλι να περιέχουν άλλα στοιχεία και ούτω καθεξής. Το ίδιο το έγγραφο αποτελείται από μια σειρά στοιχείων (μερικά από τα οποία μπορεί να περιέχουν άλλα στοιχεία). Επιπλέον, τα ακόλουθα ισχύουν για την αναπαράσταση ενός στοιχείου:

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

Η πρώτη γραμμή εισόδου περιέχει έναν άρτιο ακέραιο N (2 \le N \le 10\, 000), τον αριθμό των γραμμών στο έγγραφο.

Οι ακόλουθες N γραμμές περιέχουν τις γραμμές του εγγράφου. Κάθε γραμμή θα αντιστοιχεί σε μία αρχή ή ένα τέλος ενός στοιχείου όπως περιγράφεται στην εργασία.

Η ακόλουθη γραμμή περιέχει τον ακέραιο αριθμό M (1 \le M \le 5), τον αριθμό των επιλογέων.

Κάθε μία από τις ακόλουθες γραμμές M περιέχει έναν μόνο επιλογέα.

Τα ονόματα όλων των στοιχείων και των κλάσεων στα δεδομένα εισόδου θα αποτελούνται μόνο από πεζά γράμματα του αγγλικού αλφάβητου και το μήκος τους δεν θα είναι μεγαλύτερο από 20 χαρακτήρες.

Επιπλέον, καμία γραμμή στα δεδομένα εισόδου δεν θα είναι μεγαλύτερη από 5\,000 χαρακτήρες και το άθροισμα των μηκών όλων των γραμμών στην είσοδο δεν θα υπερβαίνει τα 5\,000\,000.

Έξοδος

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

Βαθμολογία

Σε περιπτώσεις δοκιμών αξίας 50% των συνολικών πόντων, θα ισχύει ότι οι επιλογείς δεν θα περιέχουν τον χαρακτήρα '>'.

Παράδειγμα

input

22
<div id='a' class='banana mango'>
<div id='b' class='orange'>
<div id='c' class='banana'>
<div id='d' class='apple mango orange'>
<div id='e' class='orange'>
</div>
</div>
</div>
</div>
<div id='f' class='orange apple'>
<div id='g' class='apple'>
<div id='h' class='orange apple'>
<div id='i' class='banana'>
</div>
</div>
</div>
<div id='j' class='banana'>
</div>
</div>
</div>
<div id='k' class='glupo voce daj mi sarme'>
</div>
5
.banana
.banana > .sarme
.banana > .orange > .banana
.banana .apple.orange > .orange
.mango > .orange .banana

output

4 a c i j
0
2 c j
1 e
3 c i j

Comments

There are no comments at the moment.