Submission #854591

#TimeUsernameProblemLanguageResultExecution timeMemory
854591becaidoThe Kingdom of JOIOI (JOI17_joioi)C++17
100 / 100
461 ms35864 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx,popcnt,sse4,abm") #include <bits/stdc++.h> using namespace std; #ifdef WAIMAI #define debug(HEHE...) cout << "[" << #HEHE << "] : ", dout(HEHE) void dout() {cout << '\n';} template<typename T, typename...U> void dout (T t, U...u) {cout << t << (sizeof... (u) ? ", " : ""), dout (u...);} #else #define debug(...) 7122 #endif #define ll long long #define Waimai ios::sync_with_stdio(false), cin.tie(0) #define FOR(x,a,b) for (int x = a, I = b; x <= I; x++) #define pb emplace_back #define F first #define S second const int SIZE = 2005; int n, m; int a[SIZE][SIZE]; int mx, mn; int u[SIZE], d[SIZE]; bool ok(int delta) { bool f = 1; FOR (j, 1, m) { u[j] = 0, d[j] = n; FOR (i, 1, n) { if (mx - delta > a[i][j]) break; u[j] = i; } for (int i = n; i >= 1; i--) { if (mn + delta < a[i][j]) break; d[j] = i - 1; } if (u[j] < d[j]) { f = 0; break; } } if (f) { int cur = 0; FOR (j, 1, m) { cur = max(cur, d[j]); if (cur > u[j]) { f = 0; break; } } if (f) return 1; f = 1; cur = n; FOR (j, 1, m) { cur = min(cur, u[j]); if (cur < d[j]) { f = 0; break; } } if (f) return 1; } f = 1; FOR (j, 1, m) { u[j] = 0, d[j] = n; FOR (i, 1, n) { if (mn + delta < a[i][j]) break; u[j] = i; } for (int i = n; i >= 1; i--) { if (mx - delta > a[i][j]) break; d[j] = i - 1; } if (u[j] < d[j]) { f = 0; break; } } if (f) { int cur = 0; FOR (j, 1, m) { cur = max(cur, d[j]); if (cur > u[j]) { f = 0; break; } } if (f) return 1; f = 1; cur = n; FOR (j, 1, m) { cur = min(cur, u[j]); if (cur < d[j]) { f = 0; break; } } if (f) return 1; } return 0; } void solve() { cin >> n >> m; FOR (i, 1, n) FOR (j, 1, m) cin >> a[i][j]; mn = INT_MAX; FOR (i, 1, n) FOR (j, 1, m) { mx = max(mx, a[i][j]); mn = min(mn, a[i][j]); } int l = 0, r = mx - mn; while (l < r) { int mid = (l + r) / 2; if (ok(mid)) r = mid; else l = mid + 1; } cout << l << '\n'; } int main() { Waimai; solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...