0795 - Inaltimi 1

De la Universitas MediaWiki

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

#0795 - Inaltimi 1
def inaltimi(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


if __name__ == "__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.")
                exit()
        # dacă lista de date nu este goală și apelarea funcției main
        if data:
            print("Datele de intrare corespund restricțiilor impuse.")
            result = inaltimi(n, data)
            print("Numarul de fete:", result[0])
            print("Numarul de baieti:", result[1])
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")