198412025-12-25 19:33:55birozsDinamitpypy3Időlimit túllépés 22/50501ms22504 KiB
def dinamit(sut,db):
    s = sut[:]
    for _ in range(db):
        maxpoz = s.index(max(s))
        s[maxpoz] = s[maxpoz] // 2
    return sum(s)
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:
    ut = [0] * (N + M - 1)
    sor = [[0,0]]
    knylmtln = (N + M) * 10**6
    while sor:
        akt = sor.pop()
        ut[akt[0]+akt[1]]=T[akt[0]][akt[1]]
        if akt[0] < N-1:
            sor.append([akt[0]+1,akt[1]])
        if akt[1] < M-1:
            sor.append([akt[0],akt[1]+1])
        if akt[0] == N - 1 and akt[1] == M - 1:
            robbant = dinamit(ut,K)
            if  robbant < knylmtln:
                knylmtln = robbant
    print(knylmtln)

    



RészfeladatÖsszpontTesztVerdiktIdőMemória
base22/50
1Elfogadva0/052ms21420 KiB
2Időlimit túllépés0/0479ms22224 KiB
3Elfogadva2/257ms21652 KiB
4Elfogadva2/254ms21900 KiB
5Elfogadva3/359ms21580 KiB
6Elfogadva3/359ms21732 KiB
7Elfogadva2/250ms21476 KiB
8Elfogadva3/359ms21480 KiB
9Elfogadva2/2280ms22308 KiB
10Elfogadva2/2314ms22248 KiB
11Elfogadva3/3296ms22504 KiB
12Időlimit túllépés0/3423ms22248 KiB
13Időlimit túllépés0/2486ms22384 KiB
14Időlimit túllépés0/3501ms22248 KiB
15Időlimit túllépés0/2490ms22256 KiB
16Időlimit túllépés0/3483ms22248 KiB
17Időlimit túllépés0/2477ms22196 KiB
18Időlimit túllépés0/3501ms22248 KiB
19Időlimit túllépés0/2493ms22248 KiB
20Időlimit túllépés0/3488ms22504 KiB
21Időlimit túllépés0/2492ms22244 KiB
22Időlimit túllépés0/3486ms22244 KiB