제출 #199262

#제출 시각아이디문제언어결과실행 시간메모리
199262MercenaryThe Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
699 ms16248 KiB
#include<bits/stdc++.h> #define pb push_back #define mp make_pair #define taskname "A" using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> ii; const int maxn = 2e3 + 5; int n , m , a[maxn][maxn] , Mi = 1e9 , Ma = 0; int res = 0; bool check(int val){ int L = 1 , R = m; bool ok = 1 , ok1 = 1; for(int i = 1 ; i <= n ; ++i){ int l = m , r = 1; for( ; l >= 1 ; --l){ if(a[i][l] - ::Mi > val)break; } for( ; r <= m ; ++r){ if(::Ma - a[i][r] > val)break; } --r;++l; R = min(R , r); if(R < l - 1)ok = 0; L = max(L , l); if(r + 1 < L)ok1 = 0; if(!ok && !ok1)break; // cout << l << " " << r << endl; } // cout << endl; if(ok || ok1)return 1; ok = 1 , ok1 = 1; L = 1;R = m; for(int i = 1 ; i <= n ; ++i){ int l = m , r = 1; for( ; l >= 1 ; --l){ if(::Ma - a[i][l] > val)break; } for( ; r <= m ; ++r){ if(a[i][r] - ::Mi > val)break; } --r;++l; R = min(R , r); if(R < l - 1)ok = 0; L = max(L , l); if(r + 1 < L)ok1 = 0; if(!ok && !ok1)break; // cout << l << " " << r << endl; } if(ok || ok1)return 1; return 0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); if(fopen(taskname".INP","r")){ freopen(taskname".INP", "r",stdin); freopen(taskname".OUT", "w",stdout); } cin >> n >> m; for(int i = 1 ; i <= n ; ++i)for(int j = 1 ; j <= m ; ++j){ cin >> a[i][j]; Mi = min(Mi,a[i][j]);Ma = max(Ma,a[i][j]); } // return cout << check(1) , 0; int l = 0, h = Ma - Mi; while(l <= h){ int mid = l + h >> 1; if(check(mid))h = mid - 1; else l = mid + 1; } cout << min(l , Ma - Mi); }

컴파일 시 표준 에러 (stderr) 메시지

joioi.cpp: In function 'int main()':
joioi.cpp:73:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int mid = l + h >> 1;
                   ~~^~~
joioi.cpp:62:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen(taskname".INP", "r",stdin);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
joioi.cpp:63:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen(taskname".OUT", "w",stdout);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...