fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4. //for(ll i=0;i<n;i++)
  5. int main()
  6. {
  7. ll n,k,l,ans=0;
  8. cin>>n>>k>>l;
  9. ll a[n*k],min=INT_MAX;
  10. vector<ll> vi;
  11. for(ll i=0;i<n*k;i++)
  12. {
  13. cin>>a[i];
  14. if(a[i]<min)
  15. min=a[i];
  16. }
  17. //cout<<min<<"min\n";
  18. for(ll i=0;i<n*k;i++)
  19. {
  20. if(a[i]>=min && a[i]<=l+min)
  21. {
  22. ll m=a[i];
  23. vi.push_back(m);
  24. ans++;
  25. }
  26. }
  27. //cout<<ans<<"ans\n";
  28. if(vi.size()<n)
  29. cout<<"0";
  30. else
  31. {
  32. ll c=0;
  33. sort(vi.rbegin(),vi.rend());
  34. if(vi.size()==n)
  35. {
  36. for(ll i=0;i<n;i++)
  37. c+=vi[i];
  38. }
  39. else
  40. {ll v=0,o=vi.size();
  41. while(ans>=k && v<n)
  42. {v++;
  43. c=c+min;
  44. //cout<<min<<"min";
  45. ans-=k;
  46. if(ans-(n-v)==0)
  47. {
  48. for(ll i=1;i<n;i++)
  49. {
  50. if(v<n)
  51. {
  52. c+=vi[i-1];
  53. v++;
  54. }
  55. }
  56. }
  57. if(ans-(n-v)<k)
  58. {c+=vi[o-k-1];
  59. v++;
  60. for(ll i=1;i<n;i++)
  61. {
  62. if(v<n)
  63. {
  64. c+=vi[i-1];
  65. v++;
  66. }
  67. }
  68. }
  69. if(ans==0)
  70. {
  71. break;
  72. }
  73. min=vi[o-k-1];
  74. o-=k;
  75. }
  76. }
  77. cout<<c;
  78. }
  79. return 0;
  80. }
Success #stdin #stdout 0s 4296KB
stdin
99968 1 1000000000
868099 875888 916967 916968 881043 882804 916963 916964 891978 895100 916959 916960 874018 871996 916955 916956 891974 895096 916951 916952 881039 882800 916947 916948 891970 895092 916943 916944 870939 875884 916939 916940 891966 895088 916935 916936 891962 895084 916931 916932 874014 868576 916927 916928 891958 895080 916923 916924 881031 869804 916919 916920 891954 895076 916915 916916 874010 882788 916911 916912 891950 895072 916907 916908 881027 875876 916903 916904 870935 882784 9...
stdout
Standard output is empty