Thứ Năm, 16 tháng 6, 2022

chon pascal (2 cách)

const
   fin = 'chon.inp';   fon = 'chon.out';
   maxn = 1000005;
type hs  = record
   stt:longint;
   ten:string;
   toan,tin:longint;
   end;
var
   a:array[0..maxn] of hs;
   n:longint;

procedure nhap;
var x,i:longint;
begin
    readln(n);
    for i:=1 to n do
    begin
        readln(a[i].ten);
        readln(a[i].toan,a[i].tin);
        a[i].stt:=i;
    end;
end;

function ss(x,y:hs):boolean;
begin
    if (x.toan+x.tin)>(y.toan+y.tin) then exit(true);
    if (x.toan+x.tin)<(y.toan+y.tin) then exit(false);
    if x.tin>y.tin then exit(true);
    if x.tin<y.tin then exit(false);
    if x.stt>y.stt then exit(false);
    if x.stt<y.stt then exit(true);
exit(true);
end;



procedure qs(l,h:longint);
var x,t:hs;
i,j:longint;
begin
   x:=a[(l+h) div 2];
   i:=l;j:=h;
   repeat
      while ss(a[i],x)=true do inc(i);
      while ss(x,a[j])=true do dec(j);
      if i<=j then
      begin
         t:=a[i];a[i]:=a[j];a[j]:=t;
         inc(i);dec(j);
     end;
   until i>j;
   if L<j then qs(L,j);
   if i<H then qs(i,H);
end;

procedure cach1;
begin
    qs(1,n);
    writeln(a[1].stt);
    writeln(a[1].ten);
    writeln(a[2].stt);
    writeln(a[2].ten);
    writeln(a[3].stt);
    writeln(a[3].ten);
end;

procedure cach2;
var i,max1,max2,max3:longint;

begin
    a[0].stt:=maxn;a[0].toan:=0;a[0].tin:=0;
    max1:=0;max2:=0;max3:=0;
    for i:=1 to n do
           if ss(a[i],a[max1])=true then
          begin
             max3:=max2;
            max2:=max1;
            max1:=i;
          end
           else
              if ss(a[i],a[max2])=true then
            begin
                 max3:=max2;
                max2:=i;
             end
              else
                 if ss(a[i],a[max3])=true then
                    max3:=i;
    writeln(a[max1].stt);
    writeln(a[max1].ten);
    writeln(a[max2].stt);
    writeln(a[max2].ten);
    writeln(a[max3].stt);
    writeln(a[max3].ten);
end;

begin
    assign(input,fin);reset(input);
    assign(output,fon);rewrite(output);
    nhap;
    cach1;  //sort va tim 3 phan tu dau tien
    //cach2;  //duyet va tim 3 phan tu lon nhat
    close(input);close(output);
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.