Submission #690518

#TimeUsernameProblemLanguageResultExecution timeMemory
690518mansurLuxury burrow (IZhO13_burrow)C++17
100 / 100
972 ms20560 KiB
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") //#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3") #include<bits/stdc++.h> using namespace std; #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define sz(a) (int)a.size() #define pf push_front #define pb push_back #define vt vector #define s second #define f first #define nl '\n' using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); vt<pii> rid = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; vt<pii> dir = {{-1, -1}, {-1, 1}, {1, -1}, {1, 1}}; const int N = 1111, mod = 998244353; const ll inf = 1e9; double eps = 1e-15; bool fl = 0; int n, m, k; int a[N][N]; int can(int x) { int b[n + 1][m + 1]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { b[i][j] = (a[i][j] >= x); } } int d[n + 1][m + 2]; for (int j = 1; j <= m; j++) { d[0][j] = 0; for (int i = 1; i <= n; i++) { d[i][j] = d[i - 1][j]; if (!b[i][j]) d[i][j] = i; } } int tl[n + 1][m + 1]; int tr[n + 1][m + 1]; for (int i = 1; i <= n; i++) { stack<int> s; d[i][0] = inf; s.push(0); for (int j = 1; j <= m; j++) { while (d[i][s.top()] <= d[i][j]) s.pop(); tl[i][j] = s.top() + 1; s.push(j); } while (!s.empty()) s.pop(); d[i][m + 1] = inf; s.push(m + 1); for (int j = m; j >= 1; j--) { while (d[i][s.top()] <= d[i][j]) s.pop(); tr[i][j] = s.top() - 1; s.push(j); } } int ans = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { ans = max(ans, (tr[i][j] - tl[i][j] + 1) * (i - d[i][j])); } } return ans; } void slv() { cin >> n >> m >> k; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } int l = 1, r = inf, vl; while (l <= r) { int m = (l + r) / 2; int v = can(m); if (v >= k) { l = m + 1; vl = v; }else r = m - 1; } cout << l - 1 << ' ' << vl << nl; } main() { //freopen("shops.in", "r", stdin); //freopen("shops.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); int tp = 1; if (fl) cin >> tp; while (tp--) { slv(); } }

Compilation message (stderr)

burrow.cpp:101:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  101 | main() {
      | ^~~~
burrow.cpp: In function 'void slv()':
burrow.cpp:16:12: warning: 'vl' may be used uninitialized in this function [-Wmaybe-uninitialized]
   16 | #define nl '\n'
      |            ^~~~
burrow.cpp:89:22: note: 'vl' was declared here
   89 |  int l = 1, r = inf, vl;
      |                      ^~
#Verdict Execution timeMemoryGrader output
Fetching results...