제출 #1288222

#제출 시각아이디문제언어결과실행 시간메모리
1288222Jawad_Akbar_JJThe Kingdom of JOIOI (JOI17_joioi)C++20
100 / 100
2151 ms16128 KiB
#include <iostream> using namespace std; int a[2005][2005], Max; bool poss(int n, int m, int k){ int mx = -1, mn = 1e9, id = 0; for (int j=m;j>=1;j--){ int ind = n; while (ind > id and Max - a[ind][j] <= k) ind--; id = ind; while (ind > 0) mx = max(mx, a[ind][j]), mn = min(mn, a[ind][j]), ind--; } return (mx == -1 or mx - mn <= k); } int getMin(int n, int m){ int l = -1, r = 1e9 + 7; while (l + 1 < r){ int mid = (l + r) / 2; if (poss(n, m, mid)) r = mid; else l = mid; } return r; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m, Mn; cin>>n>>m; for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++) cin>>a[i][j], Max = max(Max, a[i][j]); } Mn = getMin(n, m); for (int i=1;i<=n;i++){ for (int j=1;j+j<=m;j++) swap(a[i][j], a[i][m - j + 1]); } Mn = min(Mn, getMin(n, m)); for (int i=1;i + i <= n;i++){ for (int j=1;j<=m;j++) swap(a[i][j], a[n - i + 1][j]); } Mn = min(Mn, getMin(n, m)); for (int i=1;i<=n;i++){ for (int j=1;j+j<=m;j++) swap(a[i][j], a[i][m - j + 1]); } Mn = min(Mn, getMin(n, m)); cout<<Mn<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...