请各位编程员用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;
}