当前位置:   article > 正文

排序——分数线划定_【一本通基础排序】分数线划定

【一本通基础排序】分数线划定

洛谷 P1068 分数线划定
题目描述
世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成
绩。

题目分析
巨简单的排序程序,其实在一定程度上接近模拟
首先排序(废话)
然后将m乘以1.5加一个trunc(trunc函数,取出整数部分——向下取整)
从改变后的m开始,往后搜寻重复的(即分数与其相同的),逐步增加m,防止漏掉同分者
最后输出就行啦!

type
   score=record s,n:longint; end;
var
  a:array[1..5000]of score;
  n,m,i:longint;
procedure qs(h:longint);
var
  i,j:longint;
  temp:score;
begin
  for i:=1 to h-1 do
   for j:=i+1 to h do
    if (a[i].s<a[j].s)or(a[i].s=a[j].s)and(a[i].n>a[j].n) then
     begin
       temp:=a[i];a[i]:=a[j];a[j]:=temp;
     end;
end;

begin
  readln(n,m);
  m:=trunc(m*1.5);
  for i:=1 to n do
   readln(a[i].n,a[i].s);
  qs(n);
  while a[m+1].s=a[m].s do
   inc(m);
  writeln(a[m].s,' ',m);
  for i:=1 to m do
   writeln(a[i].n,' ',a[i].s);
end.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/638062
推荐阅读
相关标签
  

闽ICP备14008679号