제출 #415037

#제출 시각아이디문제언어결과실행 시간메모리
415037nvmdavaThe Kingdom of JOIOI (JOI17_joioi)C++17
100 / 100
757 ms54920 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N = 100005; const ll MOD = 1000000007; const ll INF = 0x3f3f3f3f3f3f3f3f; const int SQ = 300; int n, m; int mn = 1'000'000'000, mx = 0; int a[2005][2005]; void flipx(){ for(int i = 1; i <= n; ++i) for(int j = 1; j <= m / 2; ++j) swap(a[i][j], a[i][m + 1 - j]); } void flipy(){ for(int i = 1; i <= n / 2; ++i) for(int j = 1; j <= m; ++j) swap(a[i][j], a[n + 1 - i][j]); } bool check(int x){ int lim = m; for(int i = 1; i <= n; ++i){ for(int j = 1; j <= lim; ++j){ if(a[i][j] < mx - x){ lim = j - 1; break; } } for(int j = lim + 1; j <= m; ++j){ if(a[i][j] > mn + x) return 0; } } return 1; } int solve(){ int l = 0, r = 1'000'000'000; while(l != r){ int m = (l + r) >> 1; if(check(m)) r = m; else l = m + 1; } return l; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i = 1; i <= n; ++i){ for(int j = 1; j <= m; ++j){ cin>>a[i][j]; mn = min(mn, a[i][j]); mx = max(mx, a[i][j]); } } int res = 1'000'000'000; res = min(res, solve()); flipx(); res = min(res, solve()); flipy(); res = min(res, solve()); flipx(); res = min(res, solve()); cout<<res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...