Submission #1180195

#TimeUsernameProblemLanguageResultExecution timeMemory
1180195miniobThe Kingdom of JOIOI (JOI17_joioi)C++20
100 / 100
366 ms16240 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<int>> tab; int minn, maxx, h, w; bool spr(int sr) { int pop = w - 1; for(int i = 0; i < h; i++) { int gdzie = -1; for(int j = 0; j <= pop; j++) { if(tab[i][j] - minn > sr) { //cout << i << " " << j << endl; j = w + 7; } else { gdzie = j; } } pop = gdzie; for(int j = pop + 1; j < w; j++) { if(maxx - tab[i][j] > sr) { return false; } } } return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); minn = INT_MAX; maxx = INT_MIN; int odp = INT_MAX; cin >> h >> w; tab.resize(h); for(int i = 0; i < h; i++) { tab[i].resize(w); for(int j = 0; j < w; j++) { cin >> tab[i][j]; minn = min(minn, tab[i][j]); maxx = max(maxx, tab[i][j]); } } //cout << minn << " " << maxx << endl; //cout << spr(10) << endl; int l = 0, r = maxx; while (l < r) { int sr = (l + r) / 2; //cout << spr(sr) << " " << sr << endl; if (spr(sr)) { r = sr; } else { l = sr + 1; } } odp = min(odp, l); for(int i = 0; i < h; i++) { reverse(tab[i].begin(), tab[i].end()); } l = 0, r = maxx; while (l < r) { int sr = (l + r) / 2; if (spr(sr)) { r = sr; } else { l = sr + 1; } } odp = min(odp, l); for(int i = 0; i < w; i++) { for(int j = 0; j < h / 2; j++) { swap(tab[j][i], tab[h - j - 1][i]); } } l = 0, r = maxx; while (l < r) { int sr = (l + r) / 2; if (spr(sr)) { r = sr; } else { l = sr + 1; } } odp = min(odp, l); for(int i = 0; i < h; i++) { reverse(tab[i].begin(), tab[i].end()); } l = 0, r = maxx; while (l < r) { int sr = (l + r) / 2; if (spr(sr)) { r = sr; } else { l = sr + 1; } } odp = min(odp, l); cout << odp << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...