Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int countNumbers(const vector<int>& numbers, const int minNumber, const int maxNumber) {
  6.   int count = 0;
  7.  
  8.   for(int i = 0; i < numbers.size(); i++) {
  9.     if(numbers[i] >= minNumber && numbers[i] <= maxNumber) {
  10.       count++;
  11.     }
  12.   }
  13.  
  14.   return count;
  15. }
  16.  
  17. int repeatedNumberRec(const vector<int>& numbers, int minNumber, int maxNumber) {
  18.   if(minNumber == maxNumber) {
  19.     return minNumber;
  20.   }
  21.  
  22.   int mid = minNumber + (maxNumber - minNumber)/2;
  23.  
  24.   int count = countNumbers(numbers, minNumber, mid);
  25.  
  26.   if(count > mid){
  27.     return repeatedNumberRec(numbers, minNumber, mid);
  28.   }
  29.  
  30.   return repeatedNumberRec(numbers, mid + 1, maxNumber);
  31. }
  32.  
  33.  
  34. int repeatedNumber(const vector<int>& numbers) {
  35.   return repeatedNumberRec(numbers, 1, numbers.size() - 1);
  36. }
  37.  
  38. int main() {
  39.   vector<int> arr2{3,5,4,2,7,6,5,8,1};
  40.  
  41.   printf("%d\n", repeatedNumber(arr2));
  42.  
  43.   return 0;  
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement