fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. int cmpfunc (const void * a, const void * b){
  6. return ( - *(int*)a + *(int*)b );
  7. }
  8.  
  9. int main() {
  10. int students;
  11. unsigned long long money[1000];
  12.  
  13. scanf("%d", &students);
  14. while(students > 0){
  15. unsigned long long moneySum = 0;
  16.  
  17. for(int i = 0; i < students; i++){
  18. char dummy;
  19. unsigned long long dollar;
  20. unsigned long long cent;
  21. scanf("%llu%c%llu", &dollar, &dummy, &cent);
  22. unsigned long long curMoney;
  23. //printf("%f", temp);
  24. curMoney = dollar * 100 + cent;
  25. //printf("%llu\n", curMoney);
  26. money[i] = curMoney;
  27. moneySum += curMoney;
  28. }
  29.  
  30. unsigned long long averageMoney = moneySum / students;
  31. unsigned long long payOneMoreCentPeople = moneySum % students;
  32. unsigned long long answer = 0;
  33.  
  34. qsort(money, students, sizeof(unsigned long long), cmpfunc);
  35.  
  36. for(int i = 0; i < students; i++){
  37. if(money[i] > averageMoney){
  38. if(payOneMoreCentPeople > 0){
  39. answer += money[i] - averageMoney - 1;
  40. payOneMoreCentPeople--;
  41. }else{
  42. answer += money[i] - averageMoney;
  43. }
  44. }else{
  45. break;
  46. }
  47. }
  48.  
  49. printf("$%llu.%02llu\n", answer/100, answer%100);
  50. scanf("%d", &students);
  51. }
  52.  
  53. return 0; // 정상종료 시 반드시 0을 리턴해야 합니다.
  54. }
  55.  
  56.  
Success #stdin #stdout 0s 2160KB
stdin
2
10.01
10.00
3
20.00
30.00
25.00
4
29.99
30.00
35.01
44.44
0
stdout
$0.00
$5.00
$9.73