Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. class Solution {
  2. public:
  3. int h[100005], sums[100005], fle[100005];
  4. int trap(vector<int>& height) {
  5. int n = height.size();
  6. for(int i = 1; i <= n; ++i) {
  7. h[i] = height[i - 1];
  8. sums[i] = sums[i - 1] + h[i];
  9. }
  10. fle[1] = 1;
  11. int best = 0;
  12. for (int i = 2; i <= n; ++i) {
  13. int idx = i - 1;
  14. while (fle[idx] != idx && h[idx] < h[i]) {
  15. idx = fle[idx];
  16. }
  17. if(h[idx] >= h[i]) fle[i] = idx;
  18. else fle[i] = i;
  19. best = max(best, (i - idx - 1) * min(h[i], h[idx]) - (sums[i - 1] - sums[idx]));
  20. }
  21. return best;
  22. }
  23. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement