4237 - Araci: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Cerință ==
== Cerință ==
Să se determine lungimea maximă L pe care o poate obține pentru cel puțin A araci tăind bambușii.
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 ==
== 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.
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
*1 ⩽ d ⩽ 30000
*1 ⩽ '''L''' ⩽ 30000
== Exemplul 1==
== Exemplul 1==
; Intrare
; Intrare
: 4 1
: 4  
:1
: 6 10 14 9
: 6 10 14 9
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele introduse corespund restricțiilor impuse.
: 14
: 14
<br>
 
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
Line 23: Line 25:
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele introduse corespund restricțiilor impuse.
: 15
: 7<br>
<br>
 
== Rezolvare ver. 1 ==
== 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ă
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.")
</syntaxhighlight>

Latest revision as of 07:09, 11 October 2024

Cerință[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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

Exemplul 1[edit | edit source]

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

Exemplul 2[edit | edit source]

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

Rezolvare ver. 1[edit | edit source]

<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ă


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

</syntaxhighlight>