【2019 NWERC - E】Expeditious Cubing 【★】

Problem【★】

最终成绩为五个成绩去掉最好和最差两个成绩剩下三个成绩的平均数,现在Claire已经有了四个成绩,给定他听得比赛所需的最小最终成绩,求他第五次成绩最差是多少时能赢得比赛,或者无论如何都能赢得比赛,或不可能赢得比赛。

Solution【★★】

最终成绩一定在四个成绩最大三个的平均数和最小三个的平均数之间,可用这个边界判断后两种情况,然后用目标成绩和四个里面中间的两个成绩反推第五次最差成绩。会产生精度问题,需要按位当整数读入,放大100倍计算。

Code【★】

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const double eps=1e-5;
int a[10],pos,x,y,z;
double b[10],ac;
int main()
{
    for(int i=1;i<=4;i++)
    {
        scanf("%d.%1d%1d",&x,&y,&z);
        a[i]=x*100+y*10+z;
    }
    sort(a+1,a+5);
    scanf("%d.%1d%1d",&x,&y,&z);
    ac=x*100+y*10+z;
    if(a[2]+a[3]+a[4]<=ac*3)
    {
        cout<<"infinite";
        return 0;
    }
    int l=a[1],r=a[4];
    for(int i=r-1;i>=l;i--)
    {
        if(i+a[2]+a[3]<=ac*3)
        {
            printf("%.2lf",(double)i/100);
            return 0;
        }
    }
    cout<<"impossible";
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈希表扁豆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值