Submission #158114

#TimeUsernameProblemLanguageResultExecution timeMemory
158114ZwariowanyMarcinThe Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
1235 ms70504 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define mp make_pair #define pb push_back #define ld long double #define ss(x) (int) x.size() #define FOR(i, j, n) for(int i = j; i <= n; ++i) #define fi first #define se second #define cat(x) cerr << #x << " = " << x << endl; #define ios cin.tie(0); ios_base::sync_with_stdio(0) using namespace std; int n, m; int a[2002][2002], p[2002][2002]; int ans = 1000000001; int maks; int row, col; void obrot() { FOR(i, 1, n) FOR(j, 1, m) p[j][n - i + 1] = a[i][j]; int rr = col; int cc = n - row + 1; swap(n, m); row = rr; col = cc; FOR(i, 1, n) FOR(j, 1, m) a[i][j] = p[i][j]; } int bad[2002]; bool ok(int w) { int mini = maks - w; FOR(i, 1, n + 1) bad[i] = 0; for(int i = n; 1 <= i; --i) { for(int j = m; 1 <= j; --j) { if(a[i][j] < mini) { bad[i] = j; break; } } bad[i] = max(bad[i], bad[i + 1]); } if(bad[row] >= col) return 0; int Max = -1; int Min = 1e9 + 111; FOR(i, 1, n) FOR(j, 1, m) { if(j <= bad[i]) { Max = max(Max, a[i][j]); Min = min(Min, a[i][j]); } } //cout << Max << " " << Min << " " << w << endl; return Max - Min <= w; } void solve() { int l = 0; int r = 1000000000; while(l < r) { int m = (l + r) / 2; if(ok(m)) r = m; else l = m + 1; } ans = min(ans, l); } int main() { scanf("%d %d", &n, &m); FOR(i, 1, n) FOR(j, 1, m) { scanf("%d", &a[i][j]); if(a[i][j] > maks) { maks = a[i][j]; row = i; col = j; } } int k = 4; while(k--) { obrot(); /*FOR(i, 1, n) { FOR(j, 1, m) cout << a[i][j] << " "; cout << endl; } printf("\n\n"); */ solve(); } printf("%d", ans); return 0; }

Compilation message (stderr)

joioi.cpp: In function 'int main()':
joioi.cpp:84:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &m);
  ~~~~~^~~~~~~~~~~~~~~~~
joioi.cpp:87:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d", &a[i][j]);
    ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...