1085 - Loto

From Bitnami MediaWiki

La Loteria Naţională există N bile inscripţionate cu numere naturale, nenule, distincte de cel mult 4 cifre. Şeful de la loterie primeşte o cutie în care se află cele 6 bile extrase la ultima rundă, restul bilelor neextrase fiind puse într-un seif. Deoarece are o fire poznaşă, el scoate din cutie bila pe care este înscris numărul cel mai mic şi o păstrează în buzunarul hainei sale. În locul ei va pune o bilă neextrasă, aflată în seif, având numărul cel mai apropiat de aceasta. Apoi continuă operaţia şi scoate din cutie şi bila pe care este înscris numărul maxim extras iniţial, pe care o va pune în celălalt buzunar al său. De asemenea o va înlocui cu o altă bilă neextrasă iniţial, aflată în seif, având numărul cel mai apropiat de aceasta.

Cerinţă[edit | edit source]

Realizaţi un program care afişează în ordine crescătoare numerele de pe bilele aflate în cutie după modificările făcute de şef.

Date de intrare[edit | edit source]

Fișierul de intrare loto.in conține numărul natural N, pe a doua linie cele N numere naturale scrise pe bile, iar pe a treia linie cele 6 numere naturale scrise pe bilele extrase de angajaţii loteriei. Valorile scrise pe aceeaşi linie sunt separate prin spaţii.

Date de ieșire[edit | edit source]

Fișierul de ieșire loto.out se vor afişa pe prima linie, separate prin câte un spaţiu, cele 6 numere obţinute în cutie după modificările făcute de şef, în ordine crescătoare.

Restricții și precizări[edit | edit source]

  • 8 < N < 1000
  • Dacă o bilă poate fi înlocuită cu două bile la fel de apropiate de ea, atunci aceasta se va înlocui cu bila având numărul mai mare.
  • Pentru datele de test, atât bila cu numărul cel mai mic, cât şi bila cu numărul cel mai mare pot fi înlocuite cu alte bile.

Exemplul 1[edit | edit source]

loto.in

10
231 212 32 123 453 675 1321 54 67 567
212 32 67 567 675 1321

loto.out

54 67 212 453 567 675

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python2" line="1"> n = int(input()) a = [False] * 10001 b = [0] * 6

for _ in range(n):

   x = int(input())
   a[x] = True

max_value = 0 min_value = 10000 mx = 0 mn = 0

for i in range(6):

   b[i] = int(input())
   a[b[i]] = False
   if b[i] < min_value:
       min_value = b[i]
       mn = i
   if b[i] > max_value:
       max_value = b[i]
       mx = i

i = min_value j = min_value while not (a[i] or a[j]):

   if i < 10000:
       i += 1
   if j > 1:
       j -= 1

if a[i]:

   b[mn] = i

else:

   b[mn] = j

a[b[mn]] = False

i = max_value j = max_value while not (a[i] or a[j]):

   if i < 10000:
       i += 1
   if j > 1:
       j -= 1

if a[i]:

   b[mx] = i

else:

   b[mx] = j
  1. Sorting the array b

b.sort()

for i in range(5):

   print(b[i], end=' ')

print(b[5])


</syntaxhighlight>