Indeksy pierwszej pary o sumie x

Zadanie 16 z 21 · rozdział 9Trudność: 2 z 3listyindeksypętle zagnieżdżone

Treść zadania

Wczytaj listę n liczb całkowitych oraz liczbę x. Znajdź indeksy i, j (gdzie $i < j$) takie, że lista[i] + lista[j] == x.

Jeśli takich par jest kilka, wybierz tę o najmniejszym i, a przy równym i — o najmniejszym j. Jeśli nie ma żadnej — wypisz -1 -1.

Dane wejściowe

  • 1. linia: liczba elementów n
  • 2. linia: n liczb całkowitych oddzielonych spacjami
  • 3. linia: liczba całkowita x

Dane wyjściowe

Jedna linia: dwie liczby i j oddzielone spacją albo -1 -1.

Ograniczenia

  • $n \ge 2$

Uwagi

  • Para składa się z dwóch różnych pozycji w liście — elementu nie można dodać do samego siebie.
  • Wystarczą dwie zagnieżdżone pętle: zewnętrzna po i, wewnętrzna po j od i + 1 do końca listy. Szybszy sposób, ze słownikiem, poznasz w rozdziale 17.

Przykład

Wejście
5
1 3 4 5 2
5
Wyjście
0 2

Sumę $5$ dają pary indeksów $(0, 2)$: $1 + 4$ oraz $(1, 4)$: $3 + 2$. Pierwsza z nich ma mniejsze i.

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 9

Zadania w tym rozdziale ćwiczą podstawowe operacje na listach: wczytywanie, przechodzenie pętlą, modyfikowanie elementów, wyszukiwanie i zliczanie.

Konwencje wspólne:

  • Każde zadanie (i każdy podpunkt) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Lista na wejściu zajmuje dwie linie: w 1. linii jest liczba elementów n, a w 2. linii — n liczb oddzielonych pojedynczymi spacjami. Dodatkowe dane (np. szukany klucz) są w kolejnych liniach, po jednej wartości w linii.
  • Taką listę wczytasz np. tak:
    ```python
    n = int(input())
    lista = [int(x) for x in input().split()]
    `
  • Gdy wynikiem jest lista, wypisz ją instrukcją print(lista). Python wypisze ją w nawiasach kwadratowych, z elementami oddzielonymi przecinkiem i spacją, np. [4, 10, 8]. Pusta lista to [].
  • Jeśli zadanie mówi „oddzielone spacją” — użyj pojedynczej spacji.
  • Indeksy elementów liczymy od 0.
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

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
4
2 7 11 15
9
Oczekiwane wyjście
0 1

Test 2

Nie uruchomiono
Wejście
3
1 2 3
7
Oczekiwane wyjście
-1 -1

Test 3

Nie uruchomiono
Wejście
5
3 8 1 5 7
6
Oczekiwane wyjście
2 3

Test 4

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

Test 5

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

Test 6

Nie uruchomiono
Wejście
3
3 4 5
6
Oczekiwane wyjście
-1 -1
Uruchom z własnymi danymi