0249 - PozitieX
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
Exemplul 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.