fork download
  1. #include <iostream>
  2. #include <stack>
  3. using namespace std;
  4.  
  5. int* stockSpan(int* P, int n) {
  6. stack<int> st;
  7. int* spans = new int[n];
  8.  
  9. for (int i = 0; i < n; ++i) {
  10. while (!st.empty() && P[i] >= P[st.top()]) {
  11. st.pop();
  12. }
  13.  
  14. spans[i] = st.empty() ? (i + 1) : (i - st.top());
  15. st.push(i);
  16. }
  17.  
  18. return spans;
  19. }
  20.  
  21. int main() {
  22. int prices[] = {100, 80, 60, 70, 60, 75, 85};
  23. int n = sizeof(prices) / sizeof(prices[0]);
  24. int* spans = stockSpan(prices, n);
  25.  
  26. cout << "Stock prices: ";
  27. for (int i = 0; i < n; ++i) {
  28. cout << prices[i] << " ";
  29. }
  30. cout << endl;
  31.  
  32. cout << "Stock spans for each day: ";
  33. for (int i = 0; i < n; ++i) {
  34. cout << spans[i] << " ";
  35. }
  36. cout << endl;
  37.  
  38. delete[] spans;
  39. return 0;
  40. }
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
Stock prices: 100 80 60 70 60 75 85 
Stock spans for each day: 1 1 1 2 1 4 6