1
class Solution {
2
public:
3
int sumSubarrayMins(vector<int> &n) {
4
vector<long> s, sums(n.size(), 0);
5
long j, res = 0, mod = 1000000007;
6
for (int i = 0; i < n.size(); ++i) {
7
while (!s.empty() && n[s.back()] > n[i]) s.pop_back();
8
j = !s.empty() ? s.back() : -1;
9

10
sums[i] = ((j >= 0 ? sums[j] : 0) + (i - j) * n[i]) % mod;
11
s.push_back(i);
12
}
13

14
for (int i = 0; i < sums.size(); ++i) res = (res + sums[i]) % mod;
15
return res;
16
}
17
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0