fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. void exchange(int &a, int &b){
  6. int temp;
  7. temp = a;
  8. a = b;
  9. b = temp;
  10. }
  11.  
  12. //3 way quick sort
  13. void waySort(int a[],int lo, int hi){
  14. if(hi <= lo){
  15. return;
  16. }
  17. int lt = lo;
  18. int gt = hi;
  19. int i = lo;
  20. int toCompare = a[lo]; // indexes can be int, but values must be long int
  21. while(i <= gt){
  22. if(a[i] < toCompare){
  23. exchange(a[lt++], a[i++]);
  24. }
  25. else if(a[i] > toCompare){
  26. exchange(a[i], a[gt--]);
  27. }
  28. else{
  29. ++i;
  30.  
  31. }
  32. }
  33. waySort(a, lo, lt-1);
  34. waySort(a, gt+1, hi);
  35. }
  36.  
  37. int main(){
  38. int N, D;
  39. int counter;
  40. counter = 0;
  41. cin >> N >> D;
  42.  
  43. int *l;
  44. l = new int[N+1];
  45. for(int j = 0; j != N; ++j){
  46. cin >> l[j];
  47. }
  48.  
  49. waySort(l, 0, N-1); //3 way q-sort the array
  50.  
  51. for(int i = 0; i < N-1; ++i){
  52. if(l[i] + D >= l[i+1])
  53. {
  54. ++counter;
  55. ++i;
  56. }
  57. }
  58. cout << counter;
  59. delete [] l;
  60. return 0;
  61. }
Success #stdin #stdout 0s 3432KB
stdin
5 2
1
3
3
9
4
stdout
2