Mediana dwóch posortowanych list

Zadanie 10 z 13 · rozdział 10Trudność: 2 z 3listymedianascalanie

Treść zadania

Wczytaj dwie listy liczb całkowitych. Obie są posortowane niemalejąco i mają tę samą długość $n \ge 1$.

Znajdź medianę wszystkich $2n$ liczb z obu list. Ponieważ liczb jest parzyście wiele, mediana to średnia arytmetyczna dwóch środkowych wartości po ustawieniu wszystkich liczb w kolejności niemalejącej.

Dane wejściowe

  • 1. linia: lista 1 (posortowana niemalejąco) — liczby całkowite oddzielone spacjami
  • 2. linia: lista 2 (posortowana niemalejąco, tej samej długości) — liczby całkowite oddzielone spacjami

Dane wyjściowe

Jedna linia: mediana jako liczba zmiennoprzecinkowa, np. 4.5. Jeśli mediana jest liczbą całkowitą, wypisz ją z .0, np. 4.0.

Przykład

Wejście
2 4 7
3 5 9
Wyjście
4.5

Po scaleniu otrzymujemy [2, 3, 4, 5, 7, 9]; dwie środkowe wartości to 4 i 5, więc mediana wynosi $\frac{4 + 5}{2} = 4.5$.

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 10

Zadania w tym rozdziale ćwiczą jednoczesną pracę na dwóch listach (lub dwóch napisach traktowanych jak ciągi znaków): łączenie, porównywanie, przechodzenie po indeksach i scalanie list posortowanych. Pod koniec rozdziału poznasz zbiory (set) — kolekcje bez powtórzeń, które pozwalają jednym działaniem wyznaczyć część wspólną, sumę czy różnicę dwóch list — oraz funkcje zip i enumerate, ułatwiające przechodzenie po dwóch ciągach naraz.

Konwencje wspólne:

  • Każde zadanie jest osobnym programem: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Program nie wypisuje komunikatów typu „Podaj listę:”.
  • Każda lista zajmuje na wejściu jedną linię, a jej elementy są oddzielone pojedynczymi spacjami, np. 5 3 7 2. Najpierw podana jest lista 1, w następnej linii lista 2. Każda lista ma co najmniej jeden element.
  • Listę liczb całkowitych wczytasz tak: lista = [int(x) for x in input().split()] (dla liczb zmiennoprzecinkowych użyj float zamiast int).
  • Gdy wynikiem jest lista, wypisz ją tak, jak robi to print(lista) w Pythonie: w nawiasach kwadratowych, elementy oddzielone przecinkiem i spacją, np. [1, 2, 3]. Pusta lista to [].
  • Gdy treść mówi o elementach „oddzielonych przecinkami bez spacji”, wypisz je w jednej linii, np. 5,1,3, bez przecinka na końcu — np. print(*lista, sep=",").

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

Python uruchomi się w przeglądarce przy pierwszym teście.

Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.

Testy

Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.

Test 1

Nie uruchomiono
Wejście
1 3 5
2 4 6
Oczekiwane wyjście
3.5

Test 2

Nie uruchomiono
Wejście
1 2
2 3
Oczekiwane wyjście
2.0

Test 3

Nie uruchomiono
Wejście
5
10
Oczekiwane wyjście
7.5

Test 4

Nie uruchomiono
Wejście
1 2 3
10 11 12
Oczekiwane wyjście
6.5

Test 5

Nie uruchomiono
Wejście
-5 -3 -1
-4 -2 0
Oczekiwane wyjście
-2.5

Test 6

Nie uruchomiono
Wejście
1 1 1 1
1 1 1 1
Oczekiwane wyjście
1.0

Test 7

Nie uruchomiono
Wejście
0 10 20 30
5 15 25 35
Oczekiwane wyjście
17.5
Uruchom z własnymi danymi