1class Solution {2public:3int validSubarraySize(vector<int> &nums, int threshold) {4int n = nums.size();5vector<long long> lr(n, n), rl(n, -1);67vector<int> s;8for (int i = 0; i < n; ++i) {9while (!s.empty() and nums[i] < nums[s.back()]) {10lr[s.back()] = i;11s.pop_back();12}13s.push_back(i);14}15s.clear();16for (int i = n - 1; ~i; --i) {17while (!s.empty() and nums[i] < nums[s.back()]) {18rl[s.back()] = i;19s.pop_back();20}21s.push_back(i);22}2324for (int i = 0; i < n; ++i) {25long long length = lr[i] - rl[i] - 1;26if (1LL * nums[i] * length > threshold) return length;27}2829return -1;30}31};32// please upvote if you like