Skip to content

Commit 4a58778

Browse files
author
alirezakhm
authored
Create largest_zero_subMatrix.cpp
1 parent d3a710d commit 4a58778

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
int zero_matrix(vvi a) { // O(N * M)
2+
int n = a.size(), m = a[0].size(), ans = 0;
3+
vi d(m, -1), d1(m), d2(m), st;
4+
5+
forn(i, n) {
6+
forn(j, m) if (a[i][j] == 1) d[j] = i;
7+
8+
forn(j, m) {
9+
while (st.size() && d[st.back()] <= d[j]) st.pop_back();
10+
d1[j] = st.empty() ? -1 : st.back();
11+
st.push_back(j);
12+
}
13+
st.clear();
14+
15+
for (int j = m - 1; j >= 0; --j) {
16+
while (st.size() && d[st.back()] <= d[j]) st.pop_back();
17+
d2[j] = st.empty() ? m : st.back();
18+
st.push_back(j);
19+
}
20+
st.clear();
21+
22+
forn(j, m) ans = max(ans, (i - d[j]) * (d2[j] - d1[j] - 1));
23+
}
24+
return ans;
25+
}

0 commit comments

Comments
 (0)