1085 - Loto

De la Universitas 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ţă

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

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

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

  • 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

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

Lipește codul aici

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

# Sorting the array b
b.sort()

for i in range(5):
    print(b[i], end=' ')
print(b[5])