1class StockSpanner {2public:3stack<pair<int, int>> s; // val , index4vector<int> prices;5vector<int> res;6StockSpanner() {}78int next(int price) {9prices.push_back(price);10int n = prices.size();11for (int i = n - 1; i < n; i++) {12while (!s.empty() and s.top().first <= prices[i]) {13s.pop();14}15if (s.empty()) {16res.push_back(i - 0 + 1);17s.push({prices[i], i});18} else {19auto it = s.top();20res.push_back({i - it.second});21s.push({prices[i], i});22}23}24return res[n - 1];25}26};