0249 - PozitieX: Difference between revisions
Tita Marian (talk | contribs) Pagină nouă: == Cerinţa == Se dă un număr natural '''X''' şi un şir cu '''n''' numere naturale distincte două câte două. Să se determine poziţia pe care s-ar afla numărul '''X''' în şirul ordonat crescător. == Date de intrare == Fişierul de intrare '''pozitiex.in''' conţine pe prima linie numerele '''X''' şi '''n'''. Urmează '''n''' numere naturale, dispuse pe mai multe linii, separate prin spaţii. == Date de ieșire == Fişierul de ieşire '''pozitiex.out''' va conţi... |
|||
Line 49: | Line 49: | ||
==Explicație== | ==Explicație== | ||
Şirul sortat este 7 13 45 79 267 628. În acest şir, valoarea 79 se află pe poziţia a 4-a. | Şirul sortat este '''7 13 45 79 267 628'''. În acest şir, valoarea '''79''' se află pe poziţia a '''4'''-a. |
Revision as of 16:00, 18 November 2023
Cerinţa
Se dă un număr natural X şi un şir cu n numere naturale distincte două câte două. Să se determine poziţia pe care s-ar afla numărul X în şirul ordonat crescător.
Date de intrare
Fişierul de intrare pozitiex.in conţine pe prima linie numerele X şi n. Urmează n numere naturale, dispuse pe mai multe linii, separate prin spaţii.
Date de ieșire
Fişierul de ieşire pozitiex.out va conţine pe prima linie numărul p, reprezentând poziţia în şirul ordonat crescător a primului element din şirul dat. Dacă numărul X nu apare în şir, se va afişa mesajul NU EXISTA.
Restricţii şi precizări
- 1 ≤ n ⩽ 1.0000
- X şi elementele şirului vor avea cel mult 9 cifre
Exemplu 1
- pozitiex.in
- 79 6
- 267 13 45 628 7 79;
pozitiex.out
- 4
Rezolvare
<syntaxhighlight lang="python" line>
def gaseste_pozitie(X, sir): sir.sort() for i in range(len(sir)): if sir[i] == X: return i + 1 # Returnăm poziția (pornind de la 1) return -1 # Dacă nu găsim X în șir, returnăm -1
if __name__ == "__main__":
# Citim X și n din fișierul de intrare with open("pozitiex.in", "r") as f: X, n = map(int, f.readline().strip().split()) sir = list(map(int, f.read().split()))
# Verificăm restricțiile impuse if 1 <= n <= 10000 and all(1 <= num <= 10**9 for num in sir): # Găsim poziția lui X în șir pozitie = gaseste_pozitie(X, sir)
# Scriem rezultatul în fișierul de ieșire with open("pozitiex.out", "w") as f: if pozitie != -1: f.write(str(pozitie) + "\n") else: f.write("NU EXISTA\n") else: # Dacă datele de intrare nu respectă restricțiile, afișăm mesaj de eroare with open("pozitiex.out", "w") as f: f.write("Date de intrare invalide\n")
</syntaxhighlight>
Explicație
Şirul sortat este 7 13 45 79 267 628. În acest şir, valoarea 79 se află pe poziţia a 4-a.