44972023-03-29 10:48:09ZsofiaKeresztelyDinamitcpp14Hibás válasz 18/5025ms5052 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
    int n, m, k;
    cin >> n >> m >> k;
    vector<vector<ll> > t(n+1, vector<ll>(m+1, 0));
    vector<vector<vector<ll> > > dp(n+1, vector<vector<ll> >(m+1, vector<ll>(k+1, INT_MAX/2)));
    for (int i=1; i<=n; i++){
        for (int j=1; j<=m; j++){
            cin >> t[i][j];
        }
    }
    dp[1][1][0] = t[1][1];
    for (int i=1; i<=n; i++){
        for (int j=1; j<=m; j++){
            dp[i][j][0] = min(dp[i][j][0], t[i][j]+min(dp[i][j-1][0], dp[i-1][j][0]));
            for (int l=1; l<=k; l++){
                dp[i][j][l] = dp[i][j][l-1];
                for (int x=0; x<=l; x++){
                    dp[i][j][l] = min(dp[i][j][l], t[i][j]/(1 << x)+min(dp[i][j-1][l-x], dp[i-1][j][l-x]));
                }
            }
        }
    }
    /*for (int l=0; l<=k; l++){
        for (int i=1; i<=n; i++){
            for (int j=1; j<=m; j++){
                cout << dp[i][j][l] << " ";
            }
            cout << "\n";
        }
        cout << "\n";
    }*/
    cout << dp[n][m][k];
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base18/50
1Elfogadva0/03ms1812 KiB
2Hibás válasz0/025ms3224 KiB
3Elfogadva2/23ms2196 KiB
4Elfogadva2/23ms2452 KiB
5Elfogadva3/33ms2408 KiB
6Elfogadva3/33ms2668 KiB
7Elfogadva2/224ms3608 KiB
8Hibás válasz0/325ms3872 KiB
9Hibás válasz0/24ms3084 KiB
10Hibás válasz0/24ms2988 KiB
11Hibás válasz0/34ms2988 KiB
12Hibás válasz0/34ms3376 KiB
13Elfogadva2/28ms3548 KiB
14Hibás válasz0/38ms3804 KiB
15Elfogadva2/225ms4700 KiB
16Hibás válasz0/325ms4656 KiB
17Hibás válasz0/225ms4664 KiB
18Hibás válasz0/325ms4676 KiB
19Elfogadva2/225ms5052 KiB
20Hibás válasz0/325ms4876 KiB
21Hibás válasz0/225ms5004 KiB
22Hibás válasz0/325ms5020 KiB