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.")