4237 - Araci: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 4: Line 4:
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.
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 ==
== Date de ieșire ==
Programul va afișa pe ecran '''L''', reprezentând lungimea maximă posibilă a celor cel puțin A araci.
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 ==
== Restricții de precizări ==
*3 ⩽ '''n''' ⩽ 100000
*3 ⩽ '''n''' ⩽ 100000

Revision as of 19:39, 25 April 2023

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

<syntaxhighlight lang="python" line="1" start="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ă


def 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)
   print("Lungimea maxima posibila:", max_length)
   if validare(n, A, bamboos):
       print("Datele introduse corespund restricțiilor impuse.")
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")
       

if __name__ == "__main__":

   main()

</syntaxhighlight>