m0_66750408 2022-01-29 17:03 采纳率: 100%
浏览 113
已结题

(c++) [CSP-J2020] 直播获奖

请各位编程员用Dev-C++软件帮我做出本题目,排序用快速排序,本题快速排序的主要代码是什么,求告诉,谢谢
(我知道本题目需用桶排序才能得到满分,只不过我想看看快速排序是怎么样的)

为了让各位编程员方便一点,附上题目与我做错的代码:
直播获奖
NO12130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的满分为 600 分,获奖率为 w%,即当前排名 前 w%的选手的最低成绩就是即时的分数线。 更具体地,若当前已评出了 p 个选手的成绩,则当前计划获奖人数为 max(1, [p*w%]),其中 w 是获奖百分比,[x]表示对 x 向下取整,max(x,y)表示 x 和 y 中较大的数。如有选手成绩相同,则所有成绩并列的选手都能获奖,因此实际 获奖人数可能比计划中多。 作为评测组的技术人员,请你帮 CCF 写一个直播程序。
【输入格式】 第 1 行两个正整数 n,w,分别代表选手总数与获奖率。 第 2 行有 n 个非负整数,依次代表逐一评出的选手成绩。
【输出格式】 只有一行,包含 n 个非负整数,依次代表选手成绩逐一评出后,即时的获奖 分数线。相邻两个整数间用一个空格分隔。
【输入样例】 10 60
200 300 400 500 600 600 0 300 200 100
【输出样例】 200 300 400 400 400 500 400 400 300 300
【数据范围】 1≤n≤105

错误代码(帮我看下拿错了):

#include <algorithm>
using namespace std;
int n,w,b[601];
int main()
{
    cin >> n >> w;    
    for(int i =1;i<=n;i++)
    {
    cin>>b[i];
    int cnt =max(1,i * w/100);
    sort(b+1,b+1+n);
    int k = 600,sum = 0;
    while(k >= 0)
        {
            if(sum + b[k] < cnt)
            {
                sum += b[k];
                k --;
            } 
            else
            {
                cout<<k<<" ";
                break;
            }
}
}
for(w=1;w<=n;w++)
{
cout<<b[w]<<" ";
}
return 0;
}


  • 写回答

2条回答 默认 最新

  • Bamboo_Day 2022-01-29 21:10
    关注

    你可以看一下我的文章,我有一篇文章就是讲解这个的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题