0795 - Inaltimi 1
Cerința
Într-o clasă sunt n elevi, numerotați de la 1 la n, băieți și fete, pentru fiecare dintre ei cunoscându-se înălțimea, exprimată în centimetri. Să se determine câte fete sunt mai scunde decât cel mai scund băiat și câți băieți sunt mai înalți decât cea mai înaltă fată.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n caracteristicile celor n elevi, astfel: o literă (B sau F), care definește sexul elevului, și înălțimea acestuia, un număr natural nenul.
Date de ieșire
Programul va afișa pe ecran două numere A B, separate printr-un spațiu, însemnând: A – numărul de fete care sunt mai scunde decât cel mai scund băiat și B – numărul de băieți care sunt mai înalți decât cea mai înaltă fată.
Restricții și precizări
- 1 ≤ n ≤ 100;
- înălțimile elevilor vor fi mai mici decât 200;
- se garantează că există cel puțin o fată și cel puțin un băiat;
Exemplul 1
- Intrare
- 5
- B 176
- F 160
- F 165
- B 180
- B 179
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 2 3
Exemplul 2
- Intrare
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line="1">
- 0795 - Inaltimi 1
def count_students(n, data):
# inițializarea unor variabile pentru înălțimea maximă a fetelor, înălțimea minimă a băieților, # numărul de fete și numărul de băieți max_girl = 0 min_boy = 201 count_girls = 0 count_boys = 0 # parcurgerea fiecărei perechi (sex, înălțime), din listă for sex, height in data: # dacă sexul persoanei este feminin if sex == 'F': # verificarea dacă înălțimea este mai mică decât înălțimea minimă a băieților # și dacă da, incrementarea numărului de fete if height < min_boy: count_girls += 1 # verificarea dacă înălțimea este mai mare decât înălțimea maximă a fetelor # și dacă e așa, actualizarea valorii înălțimii maxime a fetelor if height > max_girl: max_girl = height # dacă sexul persoanei este masculin (M) else: # verificarea dacă înălțimea este mai mare decât înălțimea maximă a fetelor # incrementarea numărului de băieți, în caz afirmativ if height > max_girl: count_boys += 1 # verificarea dacă înălțimea este mai mică decât înălțimea minimă a băieților # la fel, actualizarea valorii înălțimii minime a băieților if height < min_boy: min_boy = height # returnarea numărului de fete și numărului de băieți return count_girls, count_boys
def main():
# citirea numărului de elevi n = int(input()) # inițializarea listei data = [] # verificarea restricțiile if n >= 1 and n <= 100: # citirea datelor pentru fiecare elev și adăugarea lor la listă for i in range(n): sex, height = input().split() height = int(height) # verificarea restricțiilor if height < 200: data.append((sex, height)) else: print("Datele de intrare nu corespund restricțiilor impuse.") return # dacă lista de date nu este goală și apelarea funcției count_students if data: print("Datele de intrare corespund restricțiilor impuse.") result = count_students(n, data) print("Numarul de fete:", result[0]) print("Numarul de baieti:", result[1]) else: print("Datele de intrare nu corespund restricțiilor impuse.")
if __name__ == "__main__":
main()
</syntaxhighlight>