robot

Time limit: 0.03s Memory limit: 2MB Input: robot.in Output: robot.out

Vlad a inventat un nou joc. Jocul conţine NN standuri aşezate în linie dreaptă. Fiecare stand are o etichetă pe care este scris un număr natural. Eticheta este considerată corectă dacă numărul îndeplineşte următoarele două condiţii:

  1. conține atât cifre pare, cât și cifre impare;
  2. începe cu cifrele impare așezate în ordine crescătoare, urmate de cifrele pare în ordine descrescătoare.

De exemplu, eticheta 137860137860 este corectă, dar etichetele 2354123541, 135135, 6464 şi 31463146 nu sunt corecte.
Pentru jocul său, Vlad a construit robotul reparator care ştie să verifice numere şi să le repare, dacă este necesar. Robotul reparator se deplasează în linie dreaptă și se opreşte pe rând la fiecare dintre cele NN standuri. La fiecare stand, robotul verifică eticheta şi dacă nu este corectă, o „repară”. Pentru a repara eticheta, robotul aranjează cifrele impare în ordine crescătoare, apoi, în continuare, aranjează cifrele pare în ordine descrescătoare; dacă eticheta nu conţine nicio cifră impară, cea mai mare cifră pară o înlocuieşte cu 99; dacă eticheta nu conţine nicio cifră pară, cea mai mică cifră impară o înlocuieşte cu 00. Deplasarea de la un stand la altul durează tt secunde, verificarea etichetei unui stand durează vv secunde, iar repararea acesteia durează rr secunde. Cursa robotului se încheie după ce robotul a verificat toate cele NN standuri şi a reparat etichetele incorecte.

Cerinţă

Scrieţi un program care citeşte numărul NN de standuri, timpul (ora hh, minutul mm, secunda ss) când robotul ajunge la primul stand, timpii tt, vv și rr cu semnificaţia din enunţ şi etichetele standurilor și care rezolvă următoarele cerințe:

  1. calculează şi afişează timpul (ora, minutul şi secunda) când robotul a încheiat verificarea tuturor celor NN standuri şi repararea etichetelor incorecte;
  2. repară (unde este necesar) etichetele standurilor şi afişează etichetele celor NN standuri la final

Date de intrare

Fişierul de intrare robot.in conţine pe prima linie un număr natural CC, reprezentând cerinţa care urmează să fie rezolvată (11 sau 22). Pe linia a doua se află numerele naturale NN, hh, mm, ss, iar pe linia a treia numerele naturale tt, vv, rr, cu semnificaţia din enunţ. Numerele aflate pe aceeaşi linie sunt separate prin câte un spaţiu. Pe următoarele NN linii se află etichetele standurilor, în ordinea aşezării acestora, câte o etichetă pe o linie.

Date de ieșire

Dacă C=1C = 1, fişierul de ieşire robot.out va conţine o singură linie pe care vor fi scrise 33 numere naturale separate prin câte un spaţiu hf mf sfhf \ mf \ sf, reprezentând ora, minutul şi respectiv secunda la care robotul termină repararea.
Dacă C=2C = 2, fişierul de ieşire robot.out va conţine NN linii pe care vor fi scrise etichetele standurilor, în ordinea aşezării acestora, după ce robotul a încheiat verificarea şi repararea, câte o etichetă pe o linie.

Restricții și precizări

  • 2N5002 ≤ N ≤ 500
  • Etichetele standurilor au cel puțin două și cel mult nouă cifre.
  • Robotul începe și încheie repararea în aceeaşi zi.
  • 0h,hf<240 ≤ h, hf < 24
  • 0m,mf,s,sf<600 ≤ m, mf, s, sf < 60
  • Pentru rezolvarea corectă a cerinţei 11 se acordă 4040 de puncte.
  • Pentru rezolvarea corectă a cerinţei 22 se acordă 6060 de puncte.

Exemplul 1

robot.in

1
3 11 20 50
7 5 15
376572
3564
123

robot.out

11 21 49 

Explicație

Cerinţa este 11. Există 33 standuri. Pentru simplitate notăm cu h:m:sh:m:s ora hh, mm minute şi ss secunde. La primul stand robotul ajunge la ora 11:20:5011:20:50. Primul stand are eticheta 376572376572, care este incorectă, deci robotul o repară. Aici va petrece 55 secunde pentru verificare şi 1515 secunde pentru reparare, deci va pleca de aici la ora 11:21:1011:21:10. La al doilea stand va ajunge la ora 11:21:1711:21:17; eticheta sa 35643564 este corectă deci robotul nu o va modifica; aici va petrece 55 secunde pentru verificare şi pleacă la ora 11:21:2211:21:22. La al treilea stand va ajunge la ora 11:21:2911:21:29. Al treilea stand are eticheta incorectă 123123, robotul o repară, deci aici va petrece 5+15=205+15 = 20 secunde şi ora la care încheie cursa este 11:21:4911:21:49.

Exemplul 2

robot.in

2
3 11 20 50
7 5 15
376572
3564
113

robot.out

357762
3564
130

Explicație

Cerinţa este 22. Există 33 standuri.
Primul stand are eticheta 376572376572, care este incorectă, robotul o repară şi aceasta devine 357762357762.
La al doilea stand eticheta 35643564 este corectă. deci robotul nu o va modifica.
Al treilea stand are eticheta incorectă 113113, robotul o repară şi devine 130130.

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