fork(6) download
  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<stack>
  4. typedef long long ll;
  5. using namespace std;
  6. ll arr(ll *ar,ll n)
  7. {
  8. stack<ll> s;
  9. ll maxi=0;
  10. ll tp;
  11. ll parr;
  12. ll i=0;
  13. while(i<n)
  14. {
  15. if(s.empty() || ar[s.top()]<=ar[i])
  16. s.push(i++);
  17. else
  18. {
  19. tp=s.top();
  20. s.pop();
  21. parr=ar[tp]*(s.empty() ? i : i - s.top() - 1);
  22.  
  23. if(parr>maxi)
  24. maxi=parr;
  25. }
  26. }
  27. if(s.empty()==false)
  28. {
  29. tp=s.top();
  30. s.pop();
  31. parr=ar[tp]*(s.empty() ? i : i - s.top() - 1);
  32. if(parr>maxi)
  33. maxi=parr;
  34. }
  35. return maxi;
  36. }
  37. int main()
  38. {
  39. ll n,i,ans;
  40. ll ar[100005];
  41. scanf("%lld",&n);
  42. for(i=0;i<n;i++)
  43. scanf("%lld",&ar[i]);
  44. ans=arr(ar,n);
  45. printf("%lld\n",ans);
  46. return 0;
  47. }
Success #stdin #stdout 0s 4124KB
stdin
5
1 2 3 4 5
stdout
5