zoukankan      html  css  js  c++  java
  • The Trip PC/UVa IDs: 110103/10137, Popularity: B, Success rate: average Level: 1

    #include<cstdio>
    #include<iostream>
    #include<string>
    #include<algorithm>
    #include<iterator>


    using namespace std;
    /*
    * A solution for "The Trip" problem.
    * UVa ID: 10137
    */
    #include <stdio.h>

    int main (int argc, const char * argv[]) {
        /* number of students in the trip */
        long numOfStudents;
       
        /* the total sum of money spent */
        double total;
       
        /* the total amount of money to exchange in order to equalize */
        double exchange;
       
        /* the equalized trip amount to be payed by each student */
        double equalizedAmount;
       
        /* difference between the equalized amount and the amount spent */
        double diff;
       
        /* sum of all negative differences */
        double negativeSum;
       
        /* sum of all positive differences */
        double positiveSum;
       
        /* iterator */
        int i;
       
        while(scanf("%ld", &numOfStudents) != EOF) {
                   
            /* 0, ends the program */
            if (!numOfStudents) {
                return 0;
            }
           
            /* keeps the amount of money spent by each student */
            double amountSpent[numOfStudents];     
           
            /* clean */
            total = 0;
            negativeSum = 0;
            positiveSum = 0;
                   
            for (i = 0; i < numOfStudents; i++) {
                scanf("%lf ", &amountSpent[i]);
                total += amountSpent[i];
            }
                   
            equalizedAmount = total / numOfStudents;
           
            for (i = 0; i < numOfStudents; i++) {
                /* to ensure 0.01 precision */
                diff = (double) (long) ((amountSpent[i] - equalizedAmount) * 100.0) / 100.0;
               
                if (diff < 0) {
                    negativeSum += diff;
                } else {
                    positiveSum += diff;
                }
            }

            /* when the total amount is even, these sums do not differ. otherwise, they differ in one cent */
            exchange = (-negativeSum > positiveSum) ? -negativeSum : positiveSum;
                           
            /* output result */
            printf("$%.2lf ", exchange);
        }

        return 0;
    }

  • 相关阅读:
    状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely
    简单几何(推公式) UVA 11646 Athletics Track
    简单几何(四边形形状) UVA 11800 Determine the Shape
    简单几何(求交点) UVA 11437 Triangle Fun
    计算几何模板
    简单几何(相对运动距离最值) UVA 11796 Dog Distance
    简单几何(求划分区域) LA 3263 That Nice Euler Circuit
    覆盖的面积 HDU
    Desert King 最小比率生成树 (好题)
    约会安排 (区间合并)毒瘤题
  • 原文地址:https://www.cnblogs.com/cute/p/3384100.html
Copyright © 2011-2022 走看看