Fişierul intrare/ieşire:robot2.in, robot2.outSursăONI 2017 clasa a 5-a
AutorAdriana SimulescuAdăugată defrancuCristian Francu francu
Timp execuţie pe test0.2 secLimită de memorie2048 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

Vezi solutiile trimise

Robot2 (clasa a 5-a)

Vlad a inventat un nou joc. Jocul conţine N 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:

  • conţine atât cifre pare, cât şi cifre impare;
  • începe cu cifrele impare aşezate în ordine crescătoare, urmate de cifrele pare în ordine descrescătoare.

De exemplu, eticheta 137860 este corectă, dar etichetele 23541, 135, 64 şi 3146 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 N 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 9; dacă eticheta nu conţine nicio cifră pară, cea mai mică cifră impară o înlocuieşte cu 0. Deplasarea de la un stand la altul durează t secunde, verificarea etichetei unui stand durează v secunde, iar repararea acesteia durează r secunde. Cursa robotului se încheie după ce robotul a verificat toate cele N standuri şi a reparat etichetele incorecte.

Cerinţă

Scrieţi un program care citeşte numărul N de standuri, timpul (ora h, minutul m, secunda s) când robotul ajunge la primul stand, timpii t, v şi r 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 N standuri şi repararea etichetelor incorecte;
  2. repară (unde este necesar) etichetele standurilor şi afişează etichetele celor N standuri la final.

Date de intrare

Fişierul de intrare robot2.in conţine pe prima linie un număr natural C, reprezentând cerinţa care urmează să fie rezolvată (1 sau 2). Pe linia a doua se află numerele naturale N, h, m, s, iar pe linia a treia numerele naturale t, v, r, cu semnificaţia din enunţ. Numerele aflate pe aceeaşi linie sunt separate prin câte un spaţiu. Pe următoarele N linii se află etichetele standurilor, în ordinea aşezării acestora, câte o etichetă pe o linie.

Date de ieşire

Dacă C=1, fişierul de ieşire robot2.out va conţine o singură linie pe care vor fi scrise 3 numere naturale separate prin câte un spaţiu hf mf sf, reprezentând ora, minutul şi respectiv secunda la care robotul termină repararea.
Dacă C=2, fişierul de ieşire robot.out va conţine N 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

  • 2 ≤ N ≤ 500
  • Etichetele standurilor au cel puţin două şi cel mult nouă cifre.
  • Robotul începe şi încheie repararea în aceeaşi zi; 0 ≤ h, hf < 24; 0 ≤ m, mf, s, sf < 60
  • Pentru rezolvarea corectă a cerinţei 1 se acordă 40 de puncte; pentru rezolvarea corectă a cerinţei 2 se acordă 60 de puncte.

Exemplu

robot2.inrobot2.outExplicaţii
1
3 11 20 50
7 5 15
376572
3564
123
11 21 49
Cerinţa este 1. Există 3 standuri. Pentru simplitate notăm cu h:m:s ora h, m minute şi s
secunde. La primul stand robotul ajunge la ora 11:20:50. Primul stand are eticheta
376572, care este incorectă, deci robotul o repară. Aici va petrece 5 secunde pentru veri-
ficare şi 15 secunde pentru reparare, deci va pleca de aici la ora 11: 21:10. La al doilea
stand va ajunge la ora 11:21:17; eticheta sa 3564 este corectă deci robotul nu o va mo-
difica; aici va petrece 5 secunde pentru verificare şi pleacă la ora 11:21:22. La al treilea
stand va ajunge la ora 11:21:29. Al treilea stand are eticheta incorectă 123, robotul o
repară, deci aici va petrece 5+15=20 secunde şi ora la care încheie cursa este 11:21:49.
2
3 11 20 50
7 5 15
376572
3564
113
357762
3564
130
Cerinţa este 2. Există 3 standuri.
Primul stand are eticheta 376572, care este incorectă, robotul o repară şi aceasta
devine 357762.
La al doilea stand eticheta 3564 este corectă. deci robotul nu o va modifica.
Al treilea stand are eticheta incorectă 113, robotul o repară şi devine 130.
Trebuie sa te autentifici pentru a trimite solutii. Click aici