subtitrare

Time limit: 0.02s Memory limit: 2MB Input: subtitrare.in Output: subtitrare.outPoints by default: 10p

Gabriel şi-a cumpărat un dvd-player care poate afişa pentru filme subtitrările în format „sub”. El are şi filme cu subtitrări în format „srt” şi doreşte să transforme aceste fişiere în format „sub”.
Subtitrările în format „srt” sunt compuse din una sau mai multe secţiuni separate prin câte o linie vidă. Fiecare secţiune are următoarea structură:

  • pe prima linie din cadrul secţiunii se află un număr natural ce reprezintă numărul secţiunii (secţiunile fiind numerotate începând cu 11);
  • pe a doua linie din cadrul secţiunii se află un text de forma:
    hh:mm:ss,fffhh:mm:ss,fffhh:mm:ss,fff \rightarrow hh:mm:ss,fff
    ce reprezintă timpul la care începe afişarea subtitrării din secţiunea curentă, urmat de timpul la care dispare subtitrarea din secţiunea curentă (hhhh este ora, mmmm este minutul, ssss este secunda, iar ffffff reprezintă miimea de secundă), cei doi timpi fiind separaţi prin \rightarrow (un spaţiu, două caractere minus, urmate de caracterul > şi încă un spaţiu);
  • pe următoarele linii din secţiune se află, pe una sau mai multe linii, textul subtitrării care va fi afişat.
    În formatul "sub" fiecare secţiune va fi convertită într-o singură linie de forma:
    {FI}{FF}text\{FI\}\{FF\}text
    unde FIFI reprezintă frame-ul la care începe afişarea subtitrării curente, FFFF reprezintă frame-ul la care dispare subtitrarea curentă, iar text reprezintă textul subtitrării din cadrul secţiunii corespunzătoare. Dacă în formatul "srt" existau mai multe linii de text în subtitrare, atunci în formatul "sub" acestea vor fi scrise pe aceeaşi linie, separate prin caracterul '|'.
    Un film este alcătuit dintr-o succesiune de imagini denumite frame-uri, acestea fiind numerotate de la 11 la numărul total de frame-uri. Toate filmele pe care le are Gabriel au 2525 de frame-uri/secundă, adică într-o secundă se vor vizualiza 2525 de frame-uri. FIFI, respectiv FFFF se calculează prin transformarea celor doi timpi de forma hh:mm:ss,fffhh:mm:ss,fff în secunde, după care se înmulţesc cu 2525 şi apoi se reţine partea întreagă.
    De exemplu,
    00:02:01,029=260+1+0.029=121.029s;121.02925=3025.725[3025.725]=302500:02:01,029 = 2*60+1+0.029 = 121.029s; 121.029*25 = 3025.725 [3025.725] = 3025

Cerinţă

Scrieţi un program care să convertească o subtitrare din format „srt” în format „sub”.

Date de intrare

Fişierul de intrare subtitrare.in conţine subtitrarea unui film în format „srt”.

Date de ieşire

Fişierul de ieşire subtitrare.out va conţine subtitrarea filmului în format „sub”.

Restricţii şi precizări

  • Fişierul de intrare conţine maxim 50005000 de linii.
  • Liniile fişierului de intrare conţin maxim 100100 de caractere din codul ASCII.
  • O secţiune poate avea oricâte linii de text, iar numărul maxim de secţiuni este 20002000.
  • În fişierul de ieşire nu sunt admise linii vide sau spaţii suplimentare (altele decât cele existente în textul subtitrării în format "srt").
  • 00hh2300 \leq hh \leq 23
  • 00mm5900 \leq mm \leq 59
  • 00ss5900 \leq ss \leq 59
  • 000fff999000 \leq fff \leq 999

Exemplu

subtitrare.in

1
00:00:02,000 --> 00:00:08,000
Ce faci la Jakarta?
Cauti o slujba?
2
00:01:58,720 --> 00:02:01,029
Invata din greselile mele.

subtitrare.out

{50}{200}Ce faci la Jakarta?|Cauti o slujba?
{2968}{3025}Invata din greselile mele.

Explicație

  • 00:00:02,000=2s00:00:02,000=2s; [225]=50[2 \cdot 25]=50
  • 00:00:08,000=8s00:00:08,000=8s; [825]=200[8 \cdot 25]=200
  • 00:01:58,720=160+58+0.720=118.720s00:01:58,720=1 \cdot 60+58+0.720=118.720s; 118.7225=2968[2968]=2968118.72 \cdot 25=2968 [2968]=2968
  • 00:02:01,029=260+1+0.029=121.029s00:02:01,029=2 \cdot 60+ 1+0.029=121.029s; 121.02925=3025.725[3025.725]=3025121.029 \cdot 25=3025.725 [3025.725]=3025

Log in or sign up to be able to send submissions!