分数线划定 题解
2023-09-05 22:07:53
发布于:广东
10阅读
0回复
0点赞
(所有注释都在代码块里)
AC代码
//在输出格式中说明辽排序规则:按笔试成绩从高到低输出,当成绩相同时,按照报名号大小
//排序,向下取整找出分数线,累计满足分数线的人数
#include <stdio.h>
int a[5001];//表示报名号,范围根据报名总数决定,下标表示个数;
int b[5001];//表示选手成绩,范围也是根据报名人数决定,下标表示个数;
int main()
{
int n,m;//n为报名参加的选手总数,m为计划录取人数
scanf("%d%d",&n,&m);
int i,j;
for(i=0;i<n;i++){
scanf("%d %d",&a[i],&b[i]);
}
//首先进行分数和报名号的排序
int temp=0;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(b[j+1]>b[j]){
temp=b[j+1];
b[j+1]=b[j];
b[j]=temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
if(b[j+1]==b[j]){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
//分数线,num为名次,第m*150%名,下标数组
int num=1.5*m;
int sum=0;//统计进入面试人数
for(i=0;i<n;i++){
if(b[i]>=b[num-1]){//记得数组下标num-1,因为是从i=0开始
sum++;
}
}
printf("%d %d\n",b[num-1],sum);
for(i=0;i<sum;i++){
printf("%d %d\n",a[i],b[i]);
}
return 0;
}
这里空空如也
有帮助,赞一个