zoukankan      html  css  js  c++  java
  • 奖学金pascal程序

    题意

    把总分排序


    分析

    先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面


    var
    a,t,p:array[0..300]of longint;
    n,i,x,y,j:longint;
    procedure kp(l,r:longint);
    var
    i,j,mid:longint;
    begin
        if l>=r then exit;
        i:=l;j:=r;mid:=t[(l+r) div 2];
        repeat
             while t[i]>mid do inc(i);
             while t[j]<mid do dec(j);
             if (t[i]<t[j])or(t[i]=t[j])and(a[i]<a[j])or(t[i]=t[j])and(a[i]>a[j])and(p[i]>p[j]) then
             begin
                 a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
                 t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
                 p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];
                 inc(i);dec(j);
             end;
        until(i>j);
        kp(l,j);
        kp(i,r);
    end;
    begin
        readln(n);
        for i:=1 to n do
        begin
            readln(a[i],x,y);
            t[i]:=a[i]+x+y;
            p[i]:=i;
        end;
        //kp(1,n);
        for i:=1 to n-1 do
        begin
            for j:=i+1 to n do
            if (t[i]<t[j])or(t[i]=t[j])and(a[i]<a[j])or(t[i]=t[j])and(a[i]>a[j])and(p[i]>p[j]) then
             begin
                 a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
                 t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
                 p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];
             end;
        end;
        for i:=1 to 5 do
        writeln(p[i],' ',t[i]);
    end.

  • 相关阅读:
    我的DBDA类文件
    登录时的验证码怎么写?
    phpcms 制作简单企业站的常用标签
    HTML 基础知识
    目标
    split函数的实现
    myString操作符重载
    cout中的执行顺序_a++和++a
    二叉树的层次遍历法
    树的前中序遍历_求后续遍历
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500213.html
Copyright © 2011-2022 走看看