Advertisement
alisadafi

Majority-Element-D&C

Nov 9th, 2023
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int majority(vector<int>& A, int l, int r) {
  7.     if (l == r) {
  8.         return A[l];
  9.     }
  10.     int mid = (l + r) / 2;
  11.     int a = majority(A, mid + 1, r);
  12.     int b = majority(A, l, mid);
  13.     if (a == b) {
  14.         return a;
  15.     }
  16.     int count_a = 0;
  17.     int count_b = 0;
  18.     for (int i = l; i <= r; i++) {
  19.         if (A[i] == a) {
  20.             count_a += 1;
  21.         } else if (A[i] == b) {
  22.             count_b += 1;
  23.         }
  24.     }
  25.     if (count_a > (r - l + 1) / 2) {
  26.         return a;
  27.     } else if (count_b > (r - l + 1) / 2) {
  28.         return b;
  29.     } else {
  30.         return -1; // Not found
  31.     }
  32. }
  33.  
  34. int main() {
  35.     vector<int> A = {2, 2, 3, 4, 2, 2, 5};
  36.     int l = 0;
  37.     int r = A.size() - 1;
  38.     int result = majority(A, l, r);
  39.     if (result != -1) {
  40.         cout << "Majority element: " << result << endl;
  41.     } else {
  42.         cout << "No majority element found." << endl;
  43.     }
  44.     return 0;
  45. }
  46.  
Tags: D&C
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement