fork download
  1.  
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. int main(){
  5. int t,n,i;
  6. cin>>t;
  7. while(t--){
  8. cin>>n;
  9. int h[n],l[n],r[n];
  10. stack<int> s;
  11. memset(l,0,sizeof(l));
  12. memset(r,0,sizeof(r));
  13. for(i=0;i<n;i++){
  14. cin>>h[i];
  15. }
  16. for(i=0;i<n;i++){
  17. if(s.size()==0);
  18. else if(h[i]<s.top());
  19. else if(h[i]>=s.top()){
  20. while(s.size()!=0 && s.top()<h[i]){
  21. if(s.top()==h[i])
  22. l[i]+=1;
  23. s.pop();
  24. }
  25. }
  26. s.push(h[i]);
  27. }
  28.  
  29. while(!s.empty())
  30. s.pop();
  31. for(i=n-1;i>=0;i--){
  32. if(s.size()==0);
  33. else if(h[i]<s.top());
  34. else if(h[i]>=s.top()){
  35. while(s.size()!=0 && s.top()<h[i]){
  36. if(s.top()==h[i])
  37. r[i]++;
  38. s.pop();
  39. }
  40. }
  41. s.push(h[i]);
  42. }
  43. for(i=0;i<n;i++){
  44. cout<<l[i]+r[i]+ " ";
  45. }
  46. cout<<endl;
  47. }
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 4900KB
stdin
1
5
1 2 2 3 2
stdout