A.出题人的RP值

链接:https://ac.nowcoder.com/acm/contest/358/A

题意:

众所周知,每个人都有自己的rp值(是个非负实数),膜别人可以从别人身上吸取rp值。
然而当你膜别人时,别人也会来膜你,互膜一段时间后,你们就平分了两人原有的rp值,当你膜过一个人之后,你就不能再膜那个人了
出题人发现自己的rp值为x,出题人周围有n个人,第i个人的rp值为a[i]
你要选择膜哪些人和膜人的顺序,使出题人的最终rp值最大

第一行两个数n,x,人数和出题人的初始rp值
第二行n个数,第i个数a[i]表示第i个人的rp值
输出保留三位小数

思路:

将n个人从小到大排序,从小到大遍历,膜RP值比自己高的就好。

代码:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000+10;
int a[MAXN];
 
int main()
{
    int n,x;
    scanf("%d%d",&n,&x);
    for (int i = 1;i<=n;i++)
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    double sum = x;
    for (int i = 1;i <= n;i++)
        if (a[i] > sum)
            sum = (sum + a[i])/2;
    printf("%.3lf\n",sum);
 
    return 0;
}

  

转载于:https://www.cnblogs.com/YDDDD/p/10290761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值