code: def getCopelandScores(profile, alpha=0.5, normalize=False):
      
  
      # Currently, we expect the profile to contain complete ordering over candidates. Ties are
      # allowed however.
      elecType = profile.getElecType()
      if elecType != "soc" and elecType != "toc":
          print("ERROR: unsupported election type")
          exit()
  
      # Initialize each Copeland score as 0.0.
      copelandscores = {}
      for cand in profile.candMap.keys():
          copelandscores[cand] = 0.0
  
      # For each pair of candidates, calculate the number of votes in which one beat the other.
      wmgMap = profile.getWmg()
      for cand1, cand2 in itertools.combinations(wmgMap.keys(), 2):
          if cand2 in wmgMap[cand1].keys():
              if wmgMap[cand1][cand2] > 0:
                  copelandscores[cand1] += 1.0
              elif wmgMap[cand1][cand2] < 0:
                  copelandscores[cand2] += 1.0
  
              # If a pair of candidates is tied, we add alpha to their score for each vote.
              else:
                  copelandscores[cand1] += alpha
                  copelandscores[cand2] += alpha
  
      if normalize:
          m = profile.numCands
          for cand in profile.candMap.keys():
              copelandscores[cand] /= (m - 1)
  
      return copelandscores
docs: Returns a dictionary that associates integer representations of each candidate with their
      Copeland score.
  
      :ivar Profile profile: A Profile object that represents an election profile.