1877 - K Max

From Bitnami MediaWiki
Revision as of 15:44, 4 January 2024 by Andrada378 (talk | contribs) (→‎Rezolvare)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 calculeaza_max_sum(n, v, k):

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

if __name__ == "__main__":

   while True:
       n = int(input("Introduceți valoarea lui n (1 ≤ n ≤ 1000): "))
       if 1 <= n <= 1000:
           break
       else:
           print("Intrare invalidă. Vă rugăm să introduceți o valoare în intervalul specificat.")
   while True:
       v = list(map(int, input("Introduceți elementele șirului separate prin spațiu: ").split()))
       elemente_valide = all(-1000000 <= elem <= 1000000 for elem in v)
       if elemente_valide:
           break
       else:
           print("Intrare invalidă. Asigurați-vă că toate elementele sunt în intervalul specificat.")
   while True:
       k = int(input("Introduceți valoarea lui k: "))
       if 1 <= k <= n:
           break
       else:
           print("Intrare invalidă. Vă rugăm să introduceți o valoare în intervalul specificat.")
   rezultat = calculeaza_max_sum(n, v, k)
   print(rezultat)

</syntaxhighlight>