1728 - K Sum Dif

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerința

Se dă un vector cu n elemente și un număr k.

Se construiește un nou vector, cu n-1 elemente, ale cărui elemente vor fi diferenţa dintre suma și modulul diferenţei a două elemente alăturate din primul vector.

Apoi se construiește un alt vector, după aceeași regulă, ș. a. m. d.

Afișați suma elementelor celui de-al k-1-lea vector construit prin această metodă.

Date de intrare

Programul citește de la tastatură numerele n, k și n numere naturale.

Date de ieșire

Programul va afișa pe ecran suma cerută.

Restricții și precizări

  • 1 ≤ n ≤ 10000
  • cele n elemente ale vectorului vor fi mai mici decât 1000
  • k≤50

Exemplul 1

Input:

6 3

5 2 4 9 3 1

Output:

32

Explicație:

Prelucrarea primului element al noului vector se face astfel: (5+2)-(5-2)=4 ,

Elementele primului vector construit vor fi: 4 4 8 6 2 .

Elementele celui de-al 2-lea vector construit vor fi: 8 8 12 4 , iar suma lor va fi 32 .

Exemplul 2

Input:

99999999 1

5 2 4 9 3 1

Output:

Conditions not met.

Rezolvare

def verify_conditions(n, k, v):
    if 1 <= n <= 10000 and k <= 50 and all(0 <= x < 1000 for x in v):
        return True
    return False

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

if verify_conditions(n, k, v):
    while k > 1:
        for i in range(n - 1):
            v[i] += (v[i + 1] - abs(v[i] - v[i + 1]))
        n -= 1
        k -= 1

    s = sum(v[:n])
    print(s)
else:
    print("Conditions not met.")