分蛋糕(UPC)

文章提供了一个C++代码示例,用于计算给定蛋糕需求下,如何分配使得所有人郁闷指数之和最小,适用于聚会场景中的公平分配问题。
摘要由CSDN通过智能技术生成

题目描述
WZJ过生日了,他邀请了许多人来参加她的生日聚会,生日聚会中最重要的一件事情就是吃蛋糕了。WZJ共邀请了n个人,这些人的心里都想好了自己要多少克蛋糕。如果给他少了,他就会郁闷(没有吃到足够多的蛋糕)。如果给他多了,他也会郁闷(因为他不能浪费,需要把这些蛋糕都吃了,撑着了会不舒服)。一个人的郁闷指数为他想要的蛋糕克数与他实际得到的蛋糕克数之差的绝对值。WZJ想指定一个人想要的蛋糕克数作为标准,给每个人都是这么多蛋糕。聚会是件高兴的事情,同学们郁闷指数之和越小越好,现在他需要知道同学们的郁闷指数最低值是多少,请你编写程序帮他实现。
输入
共有两行:
第一行:为正整数n,表示参加聚会总共有n位同学。
第二行:为n个正整数(n<10000),表示每个人想要得到的蛋糕克数(<=1000)。
输出
只有一行:为输出所有人的郁闷指数之和的最小值。
样例输入
5
100 300 200 100 300
样例输出
400
 

代码实现:
 

#pragma GCC optimize(2);
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll a[100086];
ll ans,s;
int main()
{
	  ios::sync_with_stdio;
	  cin.tie(0);
	  cout.tie(0);
      cin>>n;
      for(int i=1;i<=n;i++)
      {
       cin>>a[i];
   	  }
      sort(a+1,a+n+1);
      if(n%2==1)
	  {
            s=a[n/2+1];  
   	  }
      else   
	  {
            s=(a[n/2]+a[n/2+1])/2;
      }
      for(int i=1;i<=n;i++)
      {
       		ans+=abs(s-a[i]);
   	  }
      cout<<ans<<endl;
      return 0;
} 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charles Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值