title: Divide and conquer algorithm to solve a real-life situation
body: <p>I am trying to figure out an approach to this problem I am trying to solve. The problem is say we are having a vote to build a new facility in some company, and the company policy states that the winning facility must obtain strictly more than half of the votes to be built, i.e., let n be the
  total number of votes, if n = 20, we must obtain at least 11 votes to win; if n = 21, we also need 11 votes to win.</p>
  
  <p>My job is to figure out what facility is the winner given all the votes, or decide that no new facility is being built.</p>
  
  <p>The input of this algorithm is a list “votes” of all facilities, where each element is a facility object. The list may look like the following:</p>
  
  <pre><code>votes = [
      Bathroom, gym, food court, Bathroom,
      spa, gym, Bathroom, Bathroom,Bathroom, game room, Bathroom
  ] 
  </code></pre>
  
  <p>Our algorithm should return a facility object who is the winner of the vote or return <code>None</code> if nothing has a majority vote.
  Note that we CANNOT sort the list of votes because the output of the comparison operation between facility
  objects, like “Bathroom &lt; gym” is NOT defined. However, we CAN test the equality between Candidate objects, because
  the output of the equality test “Bathroom == Bathroom” is well defined</p>
  
  <p>I am just trying to figure out the pseudo code for this algorithm and how can this algorithm be represented recursively using the divide and conquer technique any help well be appreciated thanks.</p>