1728 - K Sum Dif

De la Universitas MediaWiki

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