4201 - Sume Cuantice: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
No edit summary
Raul (talk | contribs)
No edit summary
Line 53: Line 53:
=== Lipește codul aici ===
=== Lipește codul aici ===
1
1
  ​import sys
  ​def sume():
 
import sys


  T, N, K = map(int, sys.stdin.readline().split())
  T, N, K = map(int, sys.stdin.readline().split())
Line 68: Line 70:


  print(ans)
  print(ans)

Revision as of 17:43, 8 December 2023

Introducere

Prietenul vostru Turing vă cere din nou ajutorul! Acesta își dorește un calculator cuantic pentru a calcula o sumă colosală, imposibilă pentru orice om. Momentan nu dispune de resursele materiale și financiare pentru a lucra la nivel cuantic, așa că vă cere ajutorul!

Cerința

Se dă un șir cu N elemente, numere naturale și un număr natural K. Aveți la dispoziție următoarea operație care se poate folosi de maximum K ori: se aleg doi indici i si j pentru care i % k = j % k (1 ≤ i < j ≤ N) și se interschimbă valorile acestor doi indici.

La final, după toate operațiile, trebuie să alegeți K elemente consecutive, iar suma acestor K elemente reprezinta scorul vostru. Turing trebuie sa obtina suma maximă și vă roagă să-l ajutați!

Date de intrare

Prima linie contine un numar T, reprezentand numarul de teste. Fiecare test contine două linii.

Prima linie conține numerele N și K (1 ≤ K ≤ N ≤ 1000), N fiind numărul de elemente al șirului și K numărul prezentat în cerință.

A doua linie conține N numere întregi A1, A2, … , An ( 0 ≤ Ai ≤ 1000 ), șirul de N numere naturale.

Date de ieșire

Programul va afișa pe câte un rând nou suma maximă pentru fiecare dintre cele T operații.

Restricții și precizări

  • 1 ≤ T ≤ 1000
  • 1 ≤ K ≤ N ≤ 1000
  • 0 ≤ A[i] ≤ 1000

Exemplu:

Intrare

5
3 2
5 6 0
1 1
7
5 3
7 0 4 0 4
4 2
2 7 3 4
3 3
1000000000 1000000000 999999997

Ieșire

11
7
15
10
2999999997

Explicație

În primul caz, putem obține suma maximă 11 dacă alegem A1, A2 fără să efectuăm nicio operație.

În al treilea caz, putem obține suma maximă 15 dacă interschimbăm A1 cu A4, iar suma finală este alcatuită din elementele A3, A4, A5.

Încărcare soluție

Lipește codul aici

1

​def sume():
import sys
T, N, K = map(int, sys.stdin.readline().split())
A = list(map(int, sys.stdin.readline().split()))
B = [0] * K
for i in range(1, N+1):
    B[i % K] = max(B[i % K], A[i])
ans = sum(B)
print(ans)