Submission #901593

#TimeUsernameProblemLanguageResultExecution timeMemory
901593LOLOLOHyper-minimum (IZhO11_hyper)C++17
0 / 100
2041 ms238644 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define sz(x)   (int)(x).size()
#define len(x)  (int)(x).length()
#define cntbit(x)  builtin_popcnt(x)
#define f   first
#define s   second
#define pb  push_back

const int N = 36;
int dp[N][N][N][N][N];

void minimize(int &a, int b) {
    if (a > b)
        a = b;
}

ll solve() {
    memset(dp, 0x3f, sizeof(dp));

    int n, m;
    cin >> n >> m;

    n--;
    m--;
    for (int a = 0; a <= n; a++) {
        for (int b = 0; b <= n; b++) {
            for (int c = 0; c <= n; c++) {
                for (int d = 0; d <= n; d++) {
                    cin >> dp[0][a][b][c][d];
                }
            }
        }
    }

    vector < vector <int>> all;
    for (int mask = 0; mask < (1 << 4); mask++) {
        vector <int> v;
        for (int j = 0; j < 4; j++) {
            if (mask & (1 << j)) {
                v.pb(1);
            } else {
                v.pb(0);
            }
        }

        all.pb(v);
    }

    for (int a = n; a >= 0; a--) {
        for (int b = n; b >= 0; b--) {
            for (int c = n; c >= 0; c--) {
                for (int d = n; d >= 0; d--) {
                    for (int k = 1; k + min({a, b, c, d}) <= n && k <= m; k++) {
                        for (auto x : all) {
                            minimize(dp[k][a][b][c][d], dp[k - 1][a + x[0]][b + x[1]][c + x[2]][d + x[3]]);
                        }
                    }
                }
            }
        }
    }

    for (int a = 0; a + m <= n; a++) {
        for (int b = 0; b + m <= n; b++) {
            for (int c = 0; c + m <= n; c++) {
                for (int d = 0; d + m <= n; d++) {
                    cout << dp[m][a][b][c][d] << " ";
                }
            }
        }
    }

    return 0;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int t = 1;
    //cin >> t;

    while (t--) {
        solve();
        //cout << solve() << '\n';
    }

}
#Verdict Execution timeMemoryGrader output
Fetching results...