Submission #1316152

#TimeUsernameProblemLanguageResultExecution timeMemory
1316152abcd123456The Kingdom of JOIOI (JOI17_joioi)C++20
100 / 100
944 ms63208 KiB
#include<bits/stdc++.h> #define ll long long #define int long long #define maxn 2005 #define fi first #define se second #define sti string using namespace std; ll a[maxn][maxn],b[maxn][maxn]; ll H,W,Min=4e18,Max=-4e18; bool check(int Diff){ int firstI=0; for(int i=1;i<=H;i++){ for(int j=1;j<=W;j++){ if(b[i][j] < Max-Diff){ firstI=max(firstI,j); } } for(int j=1;j<=W;j++){ if(b[i][j] > Min+Diff){ if(j<=firstI) return 0; } } } return 1; } void flip_none() { for (int i = 1; i <= H; i++) for (int j = 1; j <= W; j++) b[i][j] = a[i][j]; } void flip_vertical() { for (int i = 1; i <= H; i++) for (int j = 1; j <= W; j++) b[i][j] = a[H - i + 1][j]; } void flip_horizontal() { for (int i = 1; i <= H; i++) for (int j = 1; j <= W; j++) b[i][j] = a[i][W - j + 1]; } void flip_both() { for (int i = 1; i <= H; i++) for (int j = 1; j <= W; j++) b[i][j] = a[H - i + 1][W - j + 1]; } bool ok(int D) { flip_none(); if (check(D)) return 1; flip_vertical(); if (check(D)) return 1; flip_horizontal(); if (check(D)) return 1; flip_both(); if (check(D)) return 1; return 0; } signed main () { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>H>>W; for(int i=1;i<=H;i++){ for(int j=1;j<=W;j++){ cin>>a[i][j]; Min=min(Min,a[i][j]); Max=max(Max,a[i][j]); } } ll L=0,R=Max-Min,ans=R; while(L<=R){ ll mid=(L+R)/2; if(ok(mid)){ ans=mid; R=mid-1; } else L=mid+1; } cout<<ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...