Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("plaja.in");
- ofstream fout("plaja.out");
- const int NMAX = 1001;
- int N, M, v[NMAX + 1], ans;
- string s;
- void max_self(int &a, int b) {
- a = max(a, b);
- }
- void checkSol(int x1, int x2, int y) {
- max_self(ans, (x2 - x1) * y);
- }
- void solve() {
- stack<int> S;
- for(int i = 1; i <= M + 1; ++i) {
- while(!S.empty() && v[S.top()] > v[i]) {
- int index = S.top();
- S.pop();
- if(S.empty())
- checkSol(0, min(i, M), v[index]);
- else
- checkSol(S.top(), i - 1, v[index]);
- }
- S.emplace(i);
- }
- }
- int main() {
- fin >> N >> M;
- for(int i = 0; i < N; ++i) {
- fin >> s;
- for(int j = 0; j < M; ++j)
- if(s[j] == '0')
- ++v[j + 1];
- else
- v[j + 1] = 0;
- solve();
- }
- fout << ans << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement