제출 #1254921

#제출 시각아이디문제언어결과실행 시간메모리
1254921ender_shayanThe Kingdom of JOIOI (JOI17_joioi)C++20
100 / 100
858 ms63328 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define S second #define F first #define pb push_back #define for1(n) for(int i=1;i<=n;i++) #define for0(n) for(int i=0;i<n;i++) #define endl '\n' #define Mp make_pair #define all(x) x.begin(),x.end() const ll mod=1e9+7; const ll inf=1e18+10; const int N=2e3+10; int A[N][N],B[N],C[N],D[N],n,m,q,k,dp[N],pre[N],L[N],R[N]; vector<int>g[N]; vector<pair<int,pii>>vec; bool check(int x){ for1(n){ L[i]=0;R[i]=m+1; } for(pair<int,pii> p:vec){ if(p.F>=vec.back().F-x)break; L[p.S.F]=max(L[p.S.F],p.S.S); } for(int i=vec.size()-1;i>=0;i--){ pair<int,pii> p=vec[i]; if(p.F<=vec[0].F+x)break; R[p.S.F]=min(R[p.S.F],p.S.S); } int mx=m; bool o=1; for1(n){ mx=min(mx,R[i]-1); o&=(mx>=L[i]); } if(o)return 1; int mn=0; o=1; for1(n){ mn=max(mn,L[i]+1); o&=(R[i]>=mn); } if(o)return 1; for1(n){ L[i]=0;R[i]=m+1; } for(pair<int,pii> p:vec){ if(p.F>=vec.back().F-x)break; R[p.S.F]=min(R[p.S.F],p.S.S); } for(int i=vec.size()-1;i>=0;i--){ pair<int,pii> p=vec[i]; if(p.F<=vec[0].F+x)break; L[p.S.F]=max(L[p.S.F],p.S.S); } mx=m; o=1; for1(n){ mx=min(mx,R[i]-1); o&=(mx>=L[i]); } if(o)return 1; mn=0; o=1; for1(n){ mn=max(mn,L[i]+1); o&=(R[i]>=mn); } if(o)return 1; return 0; } int main(){ fast_io cin>>n>>m; for1(n)for(int j=1;j<=m;j++){cin>>A[i][j];vec.pb({A[i][j],{i,j}});} sort(all(vec)); int l=-1,r=mod; while(r-l!=1){ int mid=(l+r)>>1; if(check(mid)==0)l=mid; else r=mid; } cout<<l+1<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...