Submission #103712

# Submission time Handle Problem Language Result Execution time Memory
103712 2019-04-02T07:27:14 Z RockyB The Kingdom of JOIOI (JOI17_joioi) C++17
0 / 100
2 ms 384 KB
/// In The Name Of God

#include <bits/stdc++.h>

#define f first
#define s second

#define pb push_back
#define pp pop_back
#define mp make_pair

#define sz(x) (int)x.size()
#define sqr(x) ((x) * 1ll * (x))
#define all(x) x.begin(), x.end()

#define rep(i, l, r) for (int i = (l); i <= (r); i++)
#define per(i, l, r) for (int i = (l); i >= (r); i--)

#define Kazakhstan ios_base :: sync_with_stdio(0), cin.tie(0), cout.tie(0);

#define nl '\n'
#define ioi exit(0);

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

const int N = (int)2000 + 7;
const int inf = (int)1e9 + 7;
const int mod = (int)1e9 + 7;
const ll linf = (ll)1e18 + 7;

const int dx[] = {-1, 0, 1, 0, 1, -1, -1, 1};
const int dy[] = {0, 1, 0, -1, 1, -1, 1, -1};

using namespace std;

int n, m;
int a[N][N];

vector <int> cmp;

int len[N];
int calc1() {
	int ans = inf;
	for (auto it : cmp) {
		int mx = -inf, mn = inf;
		rep(i, 1, m) {
			len[i] = n + 1;
			rep(j, 1, n) {
				if (a[j][i] > it) {
					len[i] = j;
					break;
				}
			}
		}

		{ /// cor
			int id = 1;
			rep(i, 1, m) if (len[i] > len[id]) id = i;
			int pref = len[id];
			per(i, id, 1) pref = min(pref, len[i]), len[i] = pref;
			pref = len[id];
			rep(i, id, m) pref = min(pref, len[i]), len[i] = pref;
		}
		rep(i, 1, m) {
			rep(j, len[i], n) {
				mx = max(mx, a[j][i]);
				mn = min(mn, a[j][i]);
			}
		}
		ans = min(ans, max(it - cmp[0], mx - mn));
	}
	return ans;
}
int res[N][N];
int calc2() {
	int ans = inf;
	len[m + 1] = 0;
	for (auto it : cmp) {
		int mx = -inf, mn = inf;
		bool p = 0;
		per(i, m, 1) {
			len[i] = 0;
			per(j, n, 1) {
				if (a[j][i] > it) {
					len[i] = j;
					break;
				}
			}
		}
		rep(i, 1, m) len[i] = n - len[i];
		{ /// cor
			int id = 1;
			rep(i, 1, m) if (len[i] > len[id]) id = i;
			int pref = len[id];
			per(i, id, 1) pref = min(pref, len[i]), len[i] = pref;
			pref = len[id];
			rep(i, id, m) pref = min(pref, len[i]), len[i] = pref;
		}

		rep(i, 1, m) len[i] = n - len[i];

		rep(i, 1, m) {
			rep(j, 1, len[i]) {
				mx = max(mx, a[j][i]);
				mn = min(mn, a[j][i]);
			}
		}
		ans = min(ans, max(it - cmp[0], mx - mn));
	}
	return ans;
}

int main() {
	#ifdef IOI2018
		freopen ("in.txt", "r", stdin);
	#endif
	Kazakhstan
	cin >> n >> m;
	rep(i, 1, n) rep(j, 1, m) {
		cin >> a[i][j];
		cmp.pb(a[i][j]);
	}
	sort(all(cmp));
	cmp.erase(unique(all(cmp)), cmp.end());
	cout << min(calc1(), calc2());
	ioi
}

Compilation message

joioi.cpp: In function 'int calc2()':
joioi.cpp:82:8: warning: unused variable 'p' [-Wunused-variable]
   bool p = 0;
        ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Incorrect 2 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Incorrect 2 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Incorrect 2 ms 384 KB Output isn't correct
3 Halted 0 ms 0 KB -