fork download
  1. import math
  2. def find(u, par):
  3.  
  4. if par[u] != u:
  5. par[u] = find(par[u], par)
  6. return par[u]
  7.  
  8. def union(u, v, par, size):
  9. u_root = find(u, par)
  10. v_root = find(v, par)
  11.  
  12. if u_root == v_root:
  13. return
  14.  
  15.  
  16. if size[u_root] < size[v_root]:
  17. par[u_root] = v_root
  18. size[v_root] += size[u_root]
  19. else:
  20. par[v_root] = u_root
  21. size[u_root] += size[v_root]
  22.  
  23. def ip():
  24. return map(int,input().split())
  25.  
  26.  
  27.  
  28.  
  29. T=1
  30. # T=int(input())
  31. for __ in range(T):
  32. # n=int(input())
  33. n,m=ip()
  34. a=list(ip())
  35.  
  36. a.sort()
  37.  
  38. x=[0 for _ in range(m)]
  39. res=[]
  40. curr=0
  41.  
  42. for i in range(n):
  43. r=i%m
  44. res.append(curr+a[i]+x[r])
  45. x[r]+=a[i]
  46. curr=res[-1]
  47.  
  48. print(*res)
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
Success #stdin #stdout 0.11s 14108KB
stdin
9 2
6 19 3 4 4 2 6 7 8
stdout
2 5 11 18 30 43 62 83 121