Submission #690520

#TimeUsernameProblemLanguageResultExecution timeMemory
690520KalashnikovLuxury burrow (IZhO13_burrow)C++17
100 / 100
583 ms4372 KiB
#include <bits/stdc++.h> #define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define all(a) a.begin() , a.end() #define F first #define S second using namespace std; using ll = long long; const int N = 1000+5 , inf = 2e9 + 7; const ll INF = 1e18 , mod = 1e9+7 , P = 6547; int a[N][N]; int dp[N][N]; int p[N]; int L[N] , R[N]; void solve(int tc) { int n , m, k; 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 = 1e9; int ans, mxs; while(l <= r) { int md = l+r >> 1; fill(p+1 , p+m+1 , 0); int mx = 0; for(int i = 1; i <= n; i ++) { for(int j = 1; j <= m; j ++) { int c = (a[i][j] >= md); if(c == 0) { p[j] = 0; } else { p[j] ++; } } stack<int> st; st.push(0); p[0] = -1; for(int j = 1; j <= m; j ++) { while(st.size() && p[st.top()] >= p[j]) { st.pop(); } L[j] = st.top(); st.push(j); } while(st.size()) st.pop(); st.push(m+1); p[m+1] = -1; for(int j = m; j >= 1; j --) { while(st.size() && p[st.top()] >= p[j]) { st.pop(); } R[j] = st.top(); st.push(j); } for(int j = 1; j <= m; j ++) { mx = max(mx, (R[j]-L[j]-1)*p[j]); } } if(mx >= k) { ans = md; mxs = mx; l = md+1; } else { r = md-1; } } cout << ans << ' ' << mxs; } /* */ main() { ios; int tt = 1 , tc = 0; // cin >> tt; while(tt --) { solve(++tc); } return 0; }

Compilation message (stderr)

burrow.cpp: In function 'void solve(int)':
burrow.cpp:32:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   32 |   int md = l+r >> 1;
      |            ~^~
burrow.cpp: At global scope:
burrow.cpp:82:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   82 | main() {
      | ^~~~
burrow.cpp: In function 'void solve(int)':
burrow.cpp:78:24: warning: 'mxs' may be used uninitialized in this function [-Wmaybe-uninitialized]
   78 |  cout << ans << ' ' << mxs;
      |                        ^~~
burrow.cpp:78:17: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
   78 |  cout << ans << ' ' << mxs;
      |                 ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...