238712026-01-31 10:34:52sarminDinamitcpp17Accepted 50/507ms1056 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// const ll MOD = 1e9+7;

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define int long long

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m, K; cin >> n >> m >> K;
    vector<vector<int>> a(n+1, vector<int>(m+1));
    vector<vector<vector<int>>> dp(n+1, vector<vector<int>>(m+1, vector<int>(K+1, INT_MAX)));
    for (int i = 1; i <= n; i++) {
    	for (int j = 1; j <= m; j++) {
    		cin >> a[i][j];
    	}
    }
    
    
    for (int k = 0; k <= K; k++) dp[0][1][k] = 0;
    for (int i = 1; i <= n; i++) {
    	for (int j = 1; j <= m; j++) {
    		for (int k = 0; k <= K; k++) {
    			for (int l = 0; l <= k; l++) {
                    int utide = min(dp[i][j-1][k-l], dp[i-1][j][k-l]);
    				dp[i][j][k] = min(dp[i][j][k], utide + (a[i][j]>>l));
    			}
    		}
    	}
    }
    
    cout << dp[n][m][K] << "\n";

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/06ms1004 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms528 KiB
7Accepted2/27ms820 KiB
8Accepted3/36ms1048 KiB
9Accepted2/21ms508 KiB
10Accepted2/21ms316 KiB
11Accepted3/31ms560 KiB
12Accepted3/31ms396 KiB
13Accepted2/22ms564 KiB
14Accepted3/32ms580 KiB
15Accepted2/27ms1048 KiB
16Accepted3/37ms820 KiB
17Accepted2/26ms820 KiB
18Accepted3/37ms820 KiB
19Accepted2/27ms820 KiB
20Accepted3/36ms1040 KiB
21Accepted2/26ms1048 KiB
22Accepted3/37ms1056 KiB