601 2021. 11. 04 12:09:46 goczbali Dinamit cpp14 Hibás válasz 35/50 48ms 3128 KiB
#include <iostream>
#include <limits>
#include <vector>

using namespace std;

using ll = long long;

int main() {
    ll n, m, k;
    cin >> n >> m >> k;

    vector<vector<ll>> cost(n, vector<ll>(m));
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < m; j++) {
            cin >> cost[i][j];
        }
    }

    vector<vector<vector<ll>>> dp(n, vector<vector<ll>>(m, vector<ll>(k + 1, numeric_limits<ll>::max() / 2 - 1)));

    for (ll i = 0; i <= k; i++) {
        dp[0][0][i] = cost[0][0] / max(2 * i, 1ll);
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            for (int x = 0; x <= k; x++) {
                for (int y = 0; y <= k - x; y++) {
                    if (i + 1 < n) {
                        ll c = cost[i + 1][j] / max(2ll * y, 1ll);

                        dp[i + 1][j][x + y] = min(dp[i + 1][j][x + y], dp[i][j][x] + c);
                    }

                    if (j + 1 < n) {
                        ll c = cost[i][j + 1] / max(2ll * y, 1ll);

                        dp[i][j + 1][x + y] = min(dp[i][j + 1][x + y], dp[i][j][x] + c);
                    }
                }
            }
        }
    }

    cout << dp[n - 1][m - 1][k] << endl;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 35/50
1 Elfogadva 0/0 2ms 1800 KiB
2 Elfogadva 0/0 48ms 2936 KiB
3 Elfogadva 2/2 2ms 1956 KiB
4 Elfogadva 2/2 2ms 1980 KiB
5 Elfogadva 3/3 2ms 1992 KiB
6 Elfogadva 3/3 2ms 2000 KiB
7 Elfogadva 2/2 39ms 2988 KiB
8 Elfogadva 3/3 39ms 3004 KiB
9 Hibás válasz 0/2 3ms 1980 KiB
10 Hibás válasz 0/2 3ms 1980 KiB
11 Hibás válasz 0/3 4ms 1988 KiB
12 Hibás válasz 0/3 3ms 1992 KiB
13 Hibás válasz 0/2 10ms 2228 KiB
14 Hibás válasz 0/3 9ms 2232 KiB
15 Elfogadva 2/2 39ms 3052 KiB
16 Elfogadva 3/3 41ms 3060 KiB
17 Elfogadva 2/2 41ms 3072 KiB
18 Elfogadva 3/3 39ms 3080 KiB
19 Elfogadva 2/2 39ms 3092 KiB
20 Elfogadva 3/3 41ms 3112 KiB
21 Elfogadva 2/2 41ms 3124 KiB
22 Elfogadva 3/3 37ms 3128 KiB