Submission #598777

#TimeUsernameProblemLanguageResultExecution timeMemory
598777HanksburgerThe Kingdom of JOIOI (JOI17_joioi)C++17
100 / 100
604 ms54812 KiB
#include <bits/stdc++.h> using namespace std; int a[2005][2005], b[2005]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, mn=1e9, mx=0, ans=1e9; 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]); } } b[0]=m+1; for (int y=2; y--; ) { for (int z=2; z--; ) { int l=0, r=1e9; while (l<r) { int mid=(l+r)/2; bool ok=1; for (int i=1; i<=n; i++) { for (int j=1; j<=m; j++) { if (j==b[i-1] || a[i][j]>mn+mid) { b[i]=j; break; } if (j==m) { b[i]=j+1; break; } } for (int j=b[i]; j<=m; j++) { if (a[i][j]<mx-mid) { ok=0; break; } } if (!ok) break; } if (ok) r=mid; else l=mid+1; } ans=min(ans, l); for (int i=1; i<=n; i++) for (int j=1; j<=m/2; j++) swap(a[i][j], a[i][m+1-j]); } for (int i=1; i<=m; i++) for (int j=1; j<=n/2; j++) swap(a[j][i], a[n+1-j][i]); } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...