fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. class Solution {
  5. void swap(int &x, int &y) const {
  6. int tmp = x;
  7. x = y;
  8. y = tmp;
  9. }
  10. int max(const int &x, const int &y) const {
  11. if(x > y)
  12. return x;
  13. return y;
  14. }
  15. void bubbleDown(vector<int> &v, int i, int size) const {
  16. while(true){
  17. int j = 2 * i + 1;
  18. if(j >= size)
  19. break;
  20. if(j + 1 < size && v[j + 1] > v[j])
  21. j++;
  22. if(v[j] > v[i]){
  23. swap(v[i], v[j]);
  24. i = j;
  25. }else break;
  26. }
  27. }
  28. void sort(vector<int> &v) const {
  29. int n = v.size();
  30. for(int i = n - 1; i >= 0; i--)
  31. bubbleDown(v, i, n);
  32. for(int i = n - 1, tmp; i >= 0; i--){
  33. swap(v[0], v[i]);
  34. bubbleDown(v, 0, i);
  35. }
  36. }
  37. int maxLength(const int &len, vector<int> &cuts) const {
  38. sort(cuts);
  39. int maxLen = max(len - cuts.back(), cuts.front());
  40. for(int i = 1, n = cuts.size(); i < n; i++)
  41. maxLen = max(maxLen, cuts[i] - cuts[i - 1]);
  42. return maxLen;
  43. }
  44. public:
  45. int maxArea(int h, int w, vector<int>& horizontalCuts, vector<int>& verticalCuts) {
  46. return 1LL * maxLength(h, horizontalCuts) * maxLength(w, verticalCuts) % 1000000007;
  47. }
  48. };
  49. int main() {
  50. // your code goes here
  51. return 0;
  52. }
Success #stdin #stdout 0.01s 5564KB
stdin
Standard input is empty
stdout
Standard output is empty