fork download
  1. #include <bits/stdc++.h>
  2. #define LL long long int
  3. #define mod 1000000007
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. int n;
  10. cin >> n;
  11. int value[n+2],ans[n+2];
  12.  
  13.  
  14. for(int i=1;i<=n;i++)
  15. cin >> value[i];
  16.  
  17. value[n+1]=10000000;
  18. for(int i=n;i>0;i--)
  19. {
  20. int x = i+1;
  21. while(x<=n)
  22. {
  23. if( value[x] > value[i] )break;
  24. x = ans[x];
  25. }
  26. ans[i]=x; // stores the least index which has higher value & lies to right
  27. }
  28.  
  29. value[n+1]=-1;
  30. for(int i=1;i<=n;i++){
  31. ans[i]=value[i];
  32. cout << ans[i] << " ";
  33. }
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 3100KB
stdin
5
2 4 15 1 3
stdout
2 4 15 1 3