読者です 読者をやめる 読者になる 読者になる

SRM 544 Div2 Easy ElectionFraudDiv2

問題

選挙で不正が行われたのかどうかをチェックする.投票者は10000人おり,必ず一人の候補者に投票する.各候補者の獲得票はパーセンテージで表され,小数点以下は四捨五入される.
パーセンテージが与えられた時,投票の水増しやその逆がないか答える.

解答

パーセンテージから投票数の下限値,上限値を求め,その範囲に10000人が収まるのかどうかをチェック.

class ElectionFraudDiv2
{
public:
  string IsFraudulent(vector <int> percentages)
    {
      int low_sum = 0;
      int high_sum = 0;
      int i;
      int all = 10000;
      int n = percentages.size();
      for(i = 0; i < n; i++){
        high_sum += percentages[i]*100 + 49;
        low_sum += percentages[i] == 0 ? 0 : (percentages[i]-1)*100 + 50;
      }
      if (low_sum <= all && all <= high_sum) return "NO";
      return "YES";
    }
};