Submission #366418

#TimeUsernameProblemLanguageResultExecution timeMemory
366418dolphingarlicThe Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
3952 ms32876 KiB
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

int n, m, mx, grid[2000][2000], tmp[2000][2000];

void rot() {
	for (int i = 0; i < n; i++) for (int j = 0; j < m; j++)
		tmp[j][n - i - 1] = grid[i][j];
	swap(n, m);
	for (int i = 0; i < n; i++) for (int j = 0; j < m; j++)
		grid[i][j] = tmp[i][j];
}

bool check(int diff) {
	for (int _:{0,0,0,0}) {
		int lmx = 0, lmn = mx, lst = m;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < lst; j++) if (grid[i][j] < mx - diff) {
				lst = j;
				break;
			}
			for (int j = lst; j < m; j++) lmx = max(lmx, grid[i][j]), lmn = min(lmn, grid[i][j]);
		}
		if (lmx - lmn <= diff) return true;
		rot();
	}
	return false;
}

int main() {
	cin.tie(0)->sync_with_stdio(0);
	cin >> n >> m;
	for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) {
		cin >> grid[i][j];
		mx = max(mx, grid[i][j]);
	}
	int l = 0, r = mx;
	while (l != r) {
		int mid = (l + r) / 2;
		if (check(mid)) r = mid;
		else l = mid + 1;
	}
	cout << l;
	return 0;
}

Compilation message (stderr)

joioi.cpp: In function 'bool check(int)':
joioi.cpp:16:11: warning: unused variable '_' [-Wunused-variable]
   16 |  for (int _:{0,0,0,0}) {
      |           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...