4237 - Araci

De la Universitas MediaWiki

Cerință

Să se determine lungimea maximă L pe care o poate obține pentru cel puțin A araci tăind bambușii.

Date de intrare

Programul citește de la tastatură numerele n și A, iar apoi n numere naturale, separate prin spații, reprezentând dimensiunile tulpinilor de bambus.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa pe ecran L, reprezentând lungimea maximă posibilă a celor cel puțin A araci. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

  • 3 ⩽ n ⩽ 100000
  • 1 ⩽ L ⩽ 30000

Exemplul 1

Intrare
4
1
6 10 14 9
Ieșire
Datele introduse corespund restricțiilor impuse.
14

Exemplul 2

Intrare
3
2
5 7 8
Ieșire
Datele introduse corespund restricțiilor impuse.
15

Rezolvare ver. 1

def validare(n, A, bamboos):
    n = str(n)  # Convertim n la șir de caractere
    return n.isdigit() and 3 <= int(n) <= 100000


def calculate_max_length(n, A, bamboos):
    bamboos.sort()  # Se sortează lista de dimensiuni de bambus în ordine crescătoare
    max_length = 0  # Variabila pentru lungimea maximă
    count = 0  # Variabila pentru numărul de araci
    i = n - 1  # Indexul pentru parcurgerea listei de la sfârșit
    while i >= 0 and count < A:  # Se parcurge lista în ordine descrescătoare până când se obține numărul minim de araci
        max_length += bamboos[i]  # Se adaugă dimensiunea curentă de bambus la lungimea maximă
        count += 1  # Se incrementează numărul de araci
        i -= 1  # Se trece la următorul bambus
    return max_length  # Se returnează lungimea maximă


if __name__ == "__main__":
    n = int(input("Introduceti numarul de dimensiuni de bambus: "))
    A = int(input("Introduceti numarul minim de araci: "))
    bamboos = list(map(int, input("Introduceti dimensiunile separate prin spatii: ").split()))
    max_length = calculate_max_length(n, A, bamboos)
    if validare(n, A, bamboos):
        print("Datele introduse corespund restricțiilor impuse.")
        print("Lungimea maxima posibila:", max_length)
    else:
        print("Datele introduse nu corespund restricțiilor impuse.")