fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define dl '\n'
  5. const int INF = 1e18;
  6. #define printvec(v) for(int i=0;i<v.size();i++){cout<<v[i]<<" ";}cout<<endl;
  7. #define loop(i,n){} for(int i=0;i<n;i++){}
  8. #define read(v,n) for(int i=0;i<n;i++){cin>>v[i];}
  9. #define all(v) ((v).begin()), ((v).end())
  10. #define rall(v) ((v).rbegin()), ((v).rend())
  11. typedef vector<int> vi;
  12. typedef vector<pair<int,int>> vip;
  13. #define ll long long
  14. void Antoine_Sobhy(){
  15. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  16. #ifndef ONLINE_JUDGE
  17. // freopen("business.in", "r", stdin);
  18. freopen("/home/antoine/Desktop/acpc/input.txt", "r", stdin);
  19. freopen("/home/antoine/Desktop/acpc/output.txt", "w", stdout);
  20. #endif
  21. }
  22.  
  23. void Read_Write() {
  24. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  25. freopen("nocross.in", "r", stdin);
  26. freopen("nocross.out", "w", stdout);
  27. }
  28. void solve(){
  29. int n;
  30. cin>>n;
  31. stack<int> s;
  32. vi a(n);
  33. read(a,n);
  34. vi ans(n,0);
  35. for(int i=0;i<n;i++)
  36. {
  37. ans[i]=s.size();
  38. while(!s.empty() && s.top()<=a[i] )
  39. {
  40. s.pop();
  41. }
  42. s.push(a[i]);
  43. }
  44. while (!s.empty())
  45. {
  46. s.pop();
  47. }
  48. for(int i=n-1;i>=0;i--)
  49. {
  50. ans[i]+=s.size();
  51. while(!s.empty() &&s.top()<=a[i] )
  52. {
  53. s.pop();
  54. }
  55. s.push(a[i]);
  56. }
  57. printvec(ans);
  58.  
  59. }
  60. int32_t main() {
  61. Antoine_Sobhy();
  62.  
  63. int t=1;
  64. // cin>>t;
  65. while(t--) {
  66. solve();
  67. }
  68.  
  69. return 0;
  70.  
  71.  
  72. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout