COCI-18 (2018) - Γύρος #5 - 1 (Titlovi)

View as PDF

Submit solution

Points: 19 (partial)
Time limit: 1.0s
Memory limit: 64M

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

Για να κατανοήσουμε την ομιλία σε ξένες ταινίες, η μετάφραση του προφορικού κειμένου εμφανίζεται στο κάτω μέρος της οθόνης, που στην καθομιλουμένη αυτό ονομάζεται υπότιτλος. Στον ψηφιακό κόσμο, οι υπότιτλοι γράφονται συχνά σε αρχεία .SRT, που αποτελούνται από εντολές της ακόλουθης μορφής:

[Ordinal number of the block]
[Beginning time of the subtitles --> Ending time of the subtitles]
[Subtitle text in one or more lines]

Αυτά τα μπλοκ εντολών χωρίζονται από μια κενή γραμμή. Ο χρόνος έχει τη μορφή HH:MM:SS,ΤΤΤ (σημειώστε την άνω και κάτω τελεία και το κόμμα), που σημαίνει​ώρα:λεπτό:δευτερόλεπτο, χιλιοστό του δευτερολέπτου. Ένα δευτερόλεπτο περιέχει 1.000 χιλιοστά του δευτερολέπτου. Ακολουθεί ένα παράδειγμα αρχείου .SRT:

1
00:00:01,600 --> 00:00:04,200
Good day!

2
00:00:05,900 --> 00:00:07,999
Good day to you too!
Here you go!

3
00:00:10,000 --> 00:00:14,000
May I please have ten garlic sausages?

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

Είσοδος

Τα δεδομένα εισόδου περιέχουν έως και 30 γραμμές, που αντιπροσωπεύουν μέρος κάποιου αρχείου .SRT.
Η πρώτη γραμμή αρχίζει με ένα μπλοκ εντολών με αριθμό κατάταξης X, ακολουθούμενο από μπλοκ εντολών με αριθμούς κατάταξης X + 1, X + 2, ..., X + K με τη μορφή που περιγράφεται παραπάνω.
Τα μπλοκ εντολών διαχωρίζονται από μια κενή γραμμή. Το κείμενο των υπότιτλων εντός του μπλοκ εντολών περιέχει μία ή περισσότερες μη κενές γραμμές, που περιέχουν τα γράμματα του αγγλικού αλφαβήτου και τα σημεία στίξης ',.?!. Η γραμμή μετά την τελευταία περιέχει μόνο το σύμβολο '#' που υποδεικνύει το τέλος του παρατηρούμενου μέρους του αρχείου και αυτός ο χαρακτήρας δεν θα εμφανίζεται αλλού.
Η ακόλουθη (τελευταία) γραμμή περιέχει τον χρόνο, σε χιλιοστά του δευτερολέπτου (-10\,000 \le T \le 10\,000), ο οποίος πρέπει να προστεθεί σε όλα τα μπλοκ εντολών των υπότιτλων.

Έξοδος

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

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

input

8
00:00:01,600 --> 00:00:04,200
We thought you was...

9
00:00:05,900 --> 00:00:07,999
a toad.
#
300

output

8
00:00:01,900 --> 00:00:04,500
We thought you was...

9
00:00:06,200 --> 00:00:08,299
a toad.
#

input

624
00:43:30,566 --> 00:43:32,108
Howdy do, ladies?

625
00:43:32,276 --> 00:43:33,943
Name of Pete.

626
00:43:47,124 --> 00:43:48,082
Ain't you gonna
introduce us, Pete?
#
-500

output

624
00:43:30,066 --> 00:43:31,608
Howdy do, ladies?

625
00:43:31,776 --> 00:43:33,443
Name of Pete.

626
00:43:46,624 --> 00:43:47,582
Ain't you gonna
introduce us, Pete?
#

Comments

There are no comments at the moment.