Thứ Ba, 3 tháng 5, 2022

SCHEDULE PASCAL

type    xe=record
        a,b:longint;
end;
var x:array[1..100000] of xe;
    n:longint;

procedure doc;
var i:longint;
begin
    readln(n);
    for i:=1 to n do read(x[i].a);
    readln;
    for i:=1 to n do read(x[i].b);
end;

procedure swap(var x,y:xe);
var tam:xe;
begin
    tam:=x;
    x:=y;
    y:=tam;
end;

function ss(var x,y:xe):longint;
begin
    if (x.a*y.b)>(y.a*x.b) then exit (true);
    else exit(false) ;
end;

procedure qs(l,r: longint);
var i,j: longint;
    g:xe;
begin
    g:= x[l+random(r-l)+1];
    i:=l; j:=r;
    repeat
        while ss(x[i],g)=true do inc(i);
        while ss(g,x[j])=true do dec(j);
        if i<=j then
        begin
            swap(x[i],x[j]);
            inc(i);
            dec(j);
        end;
        until i>j;
    if l<j then qs(l,j);
    if i<r then qs(i,r);
end;

procedure xuli;
var i:longint;
    s,k:qword;
begin
    qs(1,n);
    k:=0;s:=0;
    for i:=1 to n do
    begin
        k:=k+x[i].b;
        s:=s+k*x[i].a;
    end;
    write(s);
end;

begin
    assign(input,'schedule.inp');reset(input);
    assign(output,'schedule.out');rewrite(output);
    doc;
    xuli;
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.