1085 - Loto
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
<syntaxhighlight lang="python" 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
- Sorting the array b
b.sort()
for i in range(5):
print(b[i], end=' ')
print(b[5])
</syntaxhighlight>