Submission #1278764

#TimeUsernameProblemLanguageResultExecution timeMemory
1278764MisterReaperThe Kingdom of JOIOI (JOI17_joioi)C++20
100 / 100
381 ms16312 KiB
// 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...