fork download
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4.  
  5. void solve() {
  6. int n;
  7. cin >> n;
  8. vector<int> k(n);
  9. vector<pair<int,int>> ans(n);
  10. for(int i=0;i<n;i++){
  11. int p;
  12. cin>>p;
  13. ans[i]={p,i};
  14. }
  15. sort(ans.begin(),ans.end(),greater<pair<int,int>>());
  16. vector<int> p_sum(n+1,0);
  17. p_sum[n-1]=(ans[n-1].first);
  18. for(int i=n-2;i>=0;i--){
  19. p_sum[i]=p_sum[i+1]+ans[i].first;
  20. }
  21.  
  22. multiset<int> s;
  23. for(int i=0;i<n;i++){
  24. int f=ans[i].first+p_sum[i+1];
  25. int id = distance(s.begin(), s.upper_bound(f));
  26. cout<<id<<endl;
  27. k[ans[i].second]=(n-i-1)+id;
  28. s.insert(ans[i].first);
  29. }
  30. for(int i=0;i<n;i++){
  31. cout<<k[i]<<" ";
  32. }
  33. cout<<endl;
  34.  
  35.  
  36. }
  37.  
  38. signed main() {
  39. int t;
  40. cin >> t;
  41. while (t--) {
  42. solve();
  43. }
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0.01s 5292KB
stdin
4
5
9 9 9 10 10
stdout
0
1
2
3
2
2 4 4 4 4 
0
1
2
3
4
4 4 4 4 4 
0
1
2
3
4
4 4 4 4 4 
0
1
2
3
4
4 4 4 4 4