慧慧拿奖学金
描述
一年一度评奖学金的时间又到了,规定按照期末成绩每个班的前m名可以获得奖学金。
现在给你慧慧的成绩,和其他n个人的成绩,你能知道慧慧能否得奖,以及前m名的成绩吗?
输入
第一行包含三个整数 n,m, q 分别代表班里除了慧慧还有n个人, 前m名可以获得奖学金, 慧慧的期末成绩为 q (m<=n<=25000)(成绩采用百分制)
第二行包含n个整数,代表n个人的成绩。
输出
第一行输出“YES”或者“NO”,表示慧慧能否得奖学金。
接着若干行输出前m名成绩。(如果有多个人并列第m名,则一并输出)
输入样例 1
10 2 90
78 60 75 80 89 90 91 92 97 93
输出样例 1
NO
97
93
C语言
#include<stdio.h>
int main()
{
int n,m,q,t;
int arr[25000]={0};
scanf("%d%d%d",&n,&m,&q);
arr[0]=q; //将q排进数组中
for(int i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
}
for(int j=0;j<=n;j++)
{
for(int l=0;l<=n-j-1;l++)//每完成一次这个循环,可确定一个后满的数,所以下次循环的时候可以减少一次
{
if(arr[l]<arr[l+1])
{
t=arr[l];
arr[l]=arr[l+1]; //冒泡排序
arr[l+1]=t;
}
}
}
// for(int i=0;i<n;i++)
// {
// printf("%d\n",arr[i]);输出排好的数组,用来检测程序是否正确
// }
if(q>=arr[m-1])
{
printf("YES\n");
}
else
{
printf("NO\n");
}
for(int k=0;k<n;k++)
{
if(arr[k]>=arr[m-1])
printf("%d\n",arr[k]);//重点,数组已经排好序了,输出前m个数即可
}
return 0;
}