198382025-12-25 18:18:26birozsDinamitpython3Wrong answer 15/5017ms3376 KiB
N,M,K = map(int,input().split())
T = []
for _ in range(N):
    sor = list(map(int,input().split()))
    T.append(sor)
#Q[i][j] a minimális érték a bal felső saroktól az adott pontig
Q = []
sor = [0] * M
for _ in range(N):
    Q.append(sor[:])

#Q első sorának j-edik eleme az első j szám összege
Q[0][0] = T[0][0]
for j in range(1,M):
    Q[0][j] = Q[0][j-1] + T[0][j]
#Q első oszlopának i-edik eleme az első i szám összege
for i in range(1,N):
    Q[i][0] = Q[i-1][0] + T[i][0]

azonos = True
k = T[0][1]
for i in range(N-1):
    for j in range(1,M):
        if T[i][j] != k:
            azonos = False

if K == 0:
    for i in range(1,N):
        for j in range(1,M):
            if Q[i][j-1] < Q[i-1][j]:
                Q[i][j] = Q[i][j-1] + T[i][j]
            else:
                Q[i][j] = Q[i-1][j] + T[i][j]
    print(Q[N-1][M-1])
elif azonos:
    oszlop = []
    for i in range(N):
        oszlop.append(T[i][0])
    ut = oszlop + T[N-1][1:]
    for _ in range(K):
        maxpoz = ut.index(max(ut))
        ut[maxpoz] = ut[maxpoz] // 2
    print(sum(ut))
else:
    print(0)
    



SubtaskSumTestVerdictTimeMemory
base15/50
1Wrong answer0/016ms3144 KiB
2Wrong answer0/017ms3144 KiB
3Accepted2/217ms3376 KiB
4Accepted2/217ms3376 KiB
5Accepted3/317ms3336 KiB
6Accepted3/317ms3312 KiB
7Accepted2/217ms3116 KiB
8Accepted3/317ms3224 KiB
9Wrong answer0/217ms3116 KiB
10Wrong answer0/216ms3128 KiB
11Wrong answer0/316ms3136 KiB
12Wrong answer0/316ms3112 KiB
13Wrong answer0/216ms3100 KiB
14Wrong answer0/317ms3260 KiB
15Wrong answer0/217ms3360 KiB
16Wrong answer0/317ms3124 KiB
17Wrong answer0/217ms3312 KiB
18Wrong answer0/317ms3252 KiB
19Wrong answer0/217ms3124 KiB
20Wrong answer0/316ms3164 KiB
21Wrong answer0/217ms3124 KiB
22Wrong answer0/317ms3320 KiB