제출 #96180

#제출 시각아이디문제언어결과실행 시간메모리
96180fedoseevtimofeyThe Kingdom of JOIOI (JOI17_joioi)C++14
0 / 100
2 ms376 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; vector <vector <int>> a; const int Inf = 1e9; int mx = -Inf; int mn = Inf; int n, m; void rev1() { for (int i = 0; i < n; ++i) { for (int j = 0; j < m / 2; ++j) { swap(a[i][j], a[i][m - j - 1]); } } } void rev2() { for (int i = 0; i < n / 2; ++i) { for (int j = 0; j < m; ++j) { swap(a[i][j], a[n - i - 1][j]); } } } int ans = Inf; void bins() { int l = -1, r = Inf; while (r - l > 1) { int mid = (l + r) >> 1; int cr = m; bool fl = true; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (mid + a[i][j] < mx) cr = min(cr, j); } for (int j = cr; j < m; ++j) { if (mn + mid < a[i][j]) { fl = false; } } } if (fl) r = mid; else l = mid; } ans = min(ans, r); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.setf(ios::fixed); cout.precision(20); #ifdef LOCAL freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif cin >> n >> m; a.resize(n, vector <int> (m)); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> a[i][j]; mx = max(mx, a[i][j]); mn = min(mn, a[i][j]); } } ans = mx - mn; bins(); rev1(); bins(); rev2(); bins(); cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...