Submission #1358359

#TimeUsernameProblemLanguageResultExecution timeMemory
1358359SulAThe Kingdom of JOIOI (JOI17_joioi)C++20
15 / 100
4094 ms472 KiB
#include <bits/stdc++.h>
using namespace std;
using namespace chrono;

const int N = 2000;
int A[N][N];
int pref[N];
int n, m, ans = 1e9;

void rec(int i, int l) {
    if (i == n) {
        int mnIOI = 1e9, mxIOI = 0;
        int mnJOI = 1e9, mxJOI = 0;
        for (int r = 0; r < n; r++) {
            if (0 < pref[r]) {
                mnIOI = min(mnIOI, *min_element(A[r], A[r] + pref[r]));
                mxIOI = max(mxIOI, *max_element(A[r], A[r] + pref[r]));
            }
            if (pref[r] < m) {
                mnJOI = min(mnJOI, *min_element(A[r] + pref[r], A[r] + m));
                mxJOI = max(mxJOI, *max_element(A[r] + pref[r], A[r] + m));
            }
        }
//        for (int i = 0; i < n; i++) cout << pref[i] << " ";
//        cout << "\n";
//        cout<<mnIOI<<" "<<mxIOI<<" "<<mnJOI<<" "<<mxJOI<<"\n";
        if (mnIOI > mxIOI || mnJOI > mxJOI) return;
        ans = min(ans, max(mxIOI - mnIOI, mxJOI - mnJOI));
        return;
    }
    for (int x = l; x <= m; x++) {
        pref[i] = x;
        rec(i+1, x);
    }
}

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

    cin >> n >> m;
    for (int i = 0; i < n; i++) for (int j = 0; j < m; cin >> A[i][j++]);
    for (int it = 0; it < 2; it++) {
        rec(0, 0);
        for (int i = 0; i < n; i++)
            reverse(A[i], A[i] + m);
    }
    cout << ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...