제출 #1315200

#제출 시각아이디문제언어결과실행 시간메모리
1315200vlomaczkThe Kingdom of JOIOI (JOI17_joioi)C++20
0 / 100
25 ms31692 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> typedef long long ll; using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; int M=0,m=1e9; vector<vector<int>> mapa(2000, vector<int>(2000)); int w,h; void rotate90() { vector<vector<int>> N(2000, vector<int>(2000)); for(int i=0; i<w; ++i) for(int j=0; j<h; ++j) N[i][j] = mapa[j][w-i-1]; swap(mapa,N); swap(w,h); } int solve() { int lo=0, hi=M-m; while(lo < hi) { int mid = (lo+hi)/2; vector<int> H(w); int last = 0; for(int i=0; i<w; ++i) { int curr = h-1; while(curr > last && mapa[curr][i] >= M-mid) curr--; last = H[i] = curr; } int maxi = 0, mini = 1e9; for(int i=0; i<w; ++i) { for(int j=0; j<H[i]; ++j) { maxi = max(maxi, mapa[j][i]); mini = min(mini, mapa[j][i]); } } if(maxi - mini <= mid) hi = mid; else lo = mid + 1; } return lo; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int res = 1e9; cin >> h >> w; for(int i=0; i<h; ++i) { for(int j=0; j<w; ++j) { cin >> mapa[i][j]; M = max(M,mapa[i][j]); m = min(m,mapa[i][j]); } } for(int i=0; i<4; ++i) { res = min(res,solve()); rotate90(); } cout << res << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...