// File joioi.cpp created on 13.10.2025 at 11:38:50
#include <bits/stdc++.h>
using i64 = long long;
#ifdef DEBUG
#include "/home/ahmetalp/Desktop/Workplace/debug.h"
#else
#define debug(...) void(23)
#endif
constexpr int inf = int(1E9);
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, M;
std::cin >> N >> M;
std::vector<std::vector<int>> A(N, std::vector<int>(M));
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
std::cin >> A[i][j];
}
}
int mn = inf, mx = 0;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
mn = std::min(mn, A[i][j]);
mx = std::max(mx, A[i][j]);
}
}
int ans = inf;
auto solve = [&]() -> void {
auto check = [&](int mid) -> bool {
for (int i = 0, j = M; i < N; ++i) {
int nj = 0;
while (nj < j && mx - A[i][nj] <= mid) {
nj++;
}
j = nj;
for (int k = j; k < M; ++k) {
if (A[i][k] - mn > mid) {
return false;
}
}
}
return true;
};
int lo = 0, hi = inf;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (check(mid)) {
hi = mid;
} else {
lo = mid + 1;
}
}
ans = std::min(ans, lo);
};
solve();
for (int i = 0; i < N / 2; ++i) {
for (int j = 0; j < M; ++j) {
std::swap(A[i][j], A[N - 1 - i][j]);
}
}
solve();
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M / 2; ++j) {
std::swap(A[i][j], A[i][M - 1 - j]);
}
}
solve();
for (int i = 0; i < N / 2; ++i) {
for (int j = 0; j < M; ++j) {
std::swap(A[i][j], A[N - 1 - i][j]);
}
}
solve();
std::cout << ans << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |