Submission #1051644

#TimeUsernameProblemLanguageResultExecution timeMemory
1051644SamAndThe Kingdom of JOIOI (JOI17_joioi)C++17
100 / 100
847 ms54868 KiB
#include <bits/stdc++.h> using namespace std; #define m_p make_pair #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) #define fi first #define se second typedef long long ll; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); mt19937 rnf(2106); const int N = 2003; const int INF = 1000000009; int n, m; int a[N][N]; bool stg(int x, int y, int z) { int maxu = 0; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) maxu = max(maxu, a[i][j]); } if (maxu - a[x][y] <= z) return true; int min1 = a[x][y]; int max1 = 0; int min2 = INF; int max2 = 0; int l = y; int r = m; for (int i = 1; i <= n; ++i) { if (l > r) return false; for (int j = 1; j <= l; ++j) { max1 = max(max1, a[i][j]); } for (int j = l + 1; j <= r; ++j) { if (a[i][j] - min1 > z) { r = j - 1; break; } max1 = max(max1, a[i][j]); } for (int j = r + 1; j <= m; ++j) { min2 = min(min2, a[i][j]); max2 = max(max2, a[i][j]); } if (i == x) { l = 0; } } return (max1 - min1 <= z && max2 - min2 <= z); } int solvv() { int mini = 1; int minj = 1; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (a[i][j] < a[mini][minj]) { mini = i; minj = j; } } } if (mini == n && minj == m) return INF; int l = 0, r = INF; int ans; while (l <= r) { int m = (l + r) / 2; if (stg(mini, minj, m)) { ans = m; r = m - 1; } else l = m + 1; } return ans; } void frt() { for (int i = 1; i <= n; ++i) { reverse(a[i] + 1, a[i] + m + 1); } } void frs() { for (int j = 1; j <= m; ++j) { vector<int> v; for (int i = 1; i <= n; ++i) v.push_back(a[i][j]); reverse(all(v)); for (int i = 1; i <= n; ++i) a[i][j] = v[i - 1]; } } void solv() { cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) cin >> a[i][j]; } int ans = solvv(); frt(); ans = min(ans, solvv()); frs(); ans = min(ans, solvv()); frt(); ans = min(ans, solvv()); cout << ans << "\n"; } int main() { #ifdef SOMETHING freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); #endif // SOMETHING ios_base::sync_with_stdio(false), cin.tie(0); int tt = 1; //cin >> tt; while (tt--) { solv(); } return 0; }

Compilation message (stderr)

joioi.cpp: In function 'int solvv()':
joioi.cpp:85:9: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
   85 |     int ans;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...