fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void partition(int *a, int n, int pivot, int &lessCount, int &equalCount)
  5. {
  6. int *tmp = new int[n];
  7. int k = 0;
  8.  
  9. lessCount = 0;
  10. equalCount = 0;
  11.  
  12. for (int i = 0; i < n; i++)
  13. if (a[i] < pivot) {
  14. tmp[k++] = a[i];
  15. lessCount++;
  16. }
  17. for (int i = 0; i < n; i++)
  18. if (a[i] == pivot) {
  19. tmp[k++] = a[i];
  20. equalCount++;
  21. }
  22. for (int i = 0; i < n; i++)
  23. if (a[i] > pivot)
  24. tmp[k++] = a[i];
  25.  
  26. for (int i = 0; i < n; i++)
  27. a[i] = tmp[i];
  28.  
  29. delete[] tmp;
  30. }
  31.  
  32. int main()
  33. {
  34. int n, pivot, lessCount, equalCount;
  35.  
  36. cin >> n;
  37. int *a = new int[n];
  38. for (int i = 0; i < n; i++)
  39. cin >> a[i];
  40. cin >> pivot;
  41.  
  42. partition(a, n, pivot, lessCount, equalCount);
  43.  
  44. cout << "Rearranged:";
  45. for (int i = 0; i < n; i++)
  46. cout << " " << a[i];
  47. cout << "\n";
  48. cout << "Less: " << lessCount << ", Equal: " << equalCount
  49. << ", Greater: " << n - lessCount - equalCount << "\n";
  50.  
  51. delete[] a;
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0s 544KB
stdin
1
5
5
stdout
Rearranged: 5
Less: 0, Equal: 1, Greater: 0