Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n,m,x,maxx,y;
- char v[1001][1001];
- int v1[1001];
- int get(int vec[], int k)
- {
- stack<int> s;
- int maxa = 0, tp, awt, i = 0;
- while (i < k)
- {
- if (s.empty() || vec[s.top()] <= vec[i]) s.push(i++);
- else
- {
- tp = s.top();
- s.pop();
- awt = vec[tp] * (s.empty() ? i : i - s.top() - 1);
- if (maxa < awt) maxa = awt;
- }
- }
- while (!s.empty())
- {
- tp = s.top();
- s.pop();
- awt = vec[tp] * (s.empty() ? i : i - s.top() - 1);
- if (maxa < awt) maxa = awt;
- }
- return maxa;
- }
- int main()
- {
- ifstream in("hambar.in");
- ofstream out("hambar.out");
- in>>n>>m;
- in.get();
- memset(v,'0',sizeof(v));
- for(int i=0; i<m; i++)
- { in>>x>>y;
- v[x-1][y-1]='1';
- }
- m=n;
- for(int j = 0; j < n; ++j)
- {
- for(int i = 0; i < m; ++i)
- {
- if((v[j][i] - '0') == 1) v1[i] = 0;
- else if((v[j][i] - '0') == 0) v1[i] += 1;
- }
- x = get(v1, m);
- if(x > maxx) maxx = x;
- }
- out<<maxx;
- return 0;
- }
Add Comment
Please, Sign In to add comment