#include <bits/stdc++.h>
#include <experimental/random>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
void solve1();
using ll = long long;
using ull = unsigned long long;
using ld = double;
using BIG = __int128_t;
const int MOD = 1e9 + 7;
const int INF = 1e9;
signed main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int qwerty = 1;
// cin >> qwerty;
while (qwerty--) {
solve1();
}
}
void go_next(vector<vector<int>> &a) {
int n = a.size();
int m = a[0].size();
vector<vector<int>> b(m, vector<int>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
b[j][n - i - 1] = a[i][j];
}
}
swap(a, b);
}
vector<vector<int>> qqq;
bool check(vector<vector<int>> &a, int x) {
bool flag = false;
for (int ZZZ = 0; ZZZ < 4; ZZZ++) {
int n = a.size();
int m = a[0].size();
int mx = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
mx = max(mx, a[i][j]);
}
}
vector<vector<int>> color(n, vector<int>(m, 2));
int mn_i = m - 1;
for (int i = 0; i < n; i++) {
int now = -1;
for (int j = 0; j <= mn_i; j++) {
if (mx - a[i][j] > x) break;
color[i][j] = 1;
now = j;
}
mn_i = now;
}
int mn1 = INF, mx1 = 0, mn2 = INF, mx2 = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (color[i][j] == 1) {
mn1 = min(mn1, a[i][j]);
mx1 = max(mx1, a[i][j]);
} else {
mn2 = min(mn2, a[i][j]);
mx2 = max(mx2, a[i][j]);
}
}
}
int fir = mx1 - mn1;
int sec = mx2 - mn2;
if (mx1 == INF) fir = 0;
if (mx2 == INF) sec = 0;
if (max(fir, sec) <= x) {
flag = true;
break;
}
go_next(a);
}
return flag;
}
void solve1() {
int n, m;
cin >> n >> m;
vector<vector<int>> a(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j];
}
}
qqq = a;
int l = -1, r = 2 * INF;
while (r - l > 1) {
int mid = (l + r) / 2;
a = qqq;
if (check(a, mid)) {
r = mid;
} else {
l = mid;
}
}
cout << r;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |