fork download
  1. #include <iostream>
  2. #include <climits>
  3. using namespace std;
  4.  
  5. int main() {
  6. int n;
  7. cin >> n;
  8.  
  9. int arr[n];
  10.  
  11. for (int i = 0; i < n; i++) {
  12. cin >> arr[i];
  13. }
  14.  
  15. int steps = 0;
  16.  
  17. while (true) {
  18. int largest = INT_MIN;
  19. int secondLargest = INT_MIN;
  20. int index = -1;
  21.  
  22. // Find largest element and its index
  23. for (int i = 0; i < n; i++) {
  24. if (arr[i] > largest) {
  25. largest = arr[i];
  26. index = i;
  27. }
  28. }
  29.  
  30. // Find second largest distinct element
  31. for (int i = 0; i < n; i++) {
  32. if (arr[i] < largest && arr[i] > secondLargest) {
  33. secondLargest = arr[i];
  34. }
  35. }
  36.  
  37. // All elements are equal
  38. if (secondLargest == INT_MIN) {
  39. break;
  40. }
  41.  
  42. // Replace largest with second largest
  43. arr[index] = secondLargest;
  44.  
  45. steps++;
  46. }
  47.  
  48. cout << "Number of steps = " << steps << endl;
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0s 5312KB
stdin
7
2 3 3 4 5 6 6
stdout
Number of steps = 15