1877 - K Max: Difference between revisions

From Bitnami MediaWiki
Andrada378 (talk | contribs)
Pagină nouă: Cerinta Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat. Date de intrare Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k. Date de iesire Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată. Rezolvare def maxima_suma(n, si...
 
Andrada378 (talk | contribs)
No edit summary
Line 1: Line 1:
Cerinta
== Cerința ==
 
Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat.
Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat.


Date de intrare
== Date de intrare ==
 
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k.
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k.


Date de iesire  
== Date de iesire ==
 
Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată.
Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată.


Rezolvare
== Restricții și precizări ==


def maxima_suma(n, sir, k):
* 1 ≤ n ≤ 1000
* elementele șirului vor fi cuprinse între -1.000.000 și 1.000.000


    sir.sort()  # Sortăm șirul pentru a identifica cele mai mici numere negative
=== Exemplu: ===
'''Intrare'''


    suma = 0
5


    count = 0
5 -2 -3 4 1


    for i in range(n):
1


        if sir[i] < 0 and count < k:  # Schimbăm semnul numai pentru elementele negative și doar de k ori
'''Ieșire'''


            sir[i] *= -1
11


            count += 1
== Rezolvare ==
<syntaxhighlight lang="python">
def calculate_max_sum(n, v, k):
    v.sort()


    return sum(sir)  # Returnăm suma finală a întregului șir modificat
    for i in range(k):
        v[i] *= -1


def main():
    s = sum(v)
    return s


    n = int(input("Introduceți numărul de elemente din șir: "))
if __name__ == "__main__":
 
    n = int(input())
    sir = list(map(int, input("Introduceți elementele șirului separate prin spațiu: ").split()))
    v = list(map(int, input().split()))
 
    k = int(input())
    k = int(input("Introduceți valoarea lui k: "))
 
    if k <= n:
 
        rezultat = maxima_suma(n, sir, k)
 
        print("Suma maximă obținută schimbând semnul a", k, "elemente distincte:", rezultat)
 
    else:


        print("k trebuie să fie mai mic sau egal cu n!")
    result = calculate_max_sum(n, v, k)
 
    print(result)
if __name__ == "__main__":


    main()
</syntaxhighlight>

Revision as of 13:08, 2 January 2024

Cerința

Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k.

Date de iesire

Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • elementele șirului vor fi cuprinse între -1.000.000 și 1.000.000

Exemplu:

Intrare

5

5 -2 -3 4 1

1

Ieșire

11

Rezolvare

<syntaxhighlight lang="python"> def calculate_max_sum(n, v, k):

   v.sort()
   for i in range(k):
       v[i] *= -1
   s = sum(v)
   return s

if __name__ == "__main__":

   n = int(input())
   v = list(map(int, input().split()))
   k = int(input())
   result = calculate_max_sum(n, v, k)
   print(result)

</syntaxhighlight>