CTNEWS - Lâu đài cát

Tác giả: ladpro98

Ngôn ngữ: Pascal

program ctnews;
uses    math;
var     n,x,y:longint;
        a:array[1..2,1..25555] of longint;
        i:longint;
        res:int64;
procedure input;
var     f:text;
        i:longint;
begin
        assign(f,'');
        reset(f);
        readln(f,n,x,y);
        for i:=1 to n do
        readln(f,a[1,i],a[2,i]);
        close(f);
end;

procedure swap(k,i,j:longint);
var     t:longint;
begin
        t:=a[k,i];
        a[k,i]:=a[k,j];
        a[k,j]:=t;
end;

procedure sort(k,l,r:longint);
var     p,i,j:longint;
begin
        if l>=r then exit;
        p:=a[k,random(r-l+1)+l];
        i:=l;j:=r;
        repeat
                while a[k,i]<p do inc(i);
                while a[k,j]>p do dec(j);
                if i<=j then
                begin
                        if i<j then swap(k,i,j);
                        inc(i);dec(j);
                end;
        until i>j;
        sort(k,l,j);sort(k,i,r);
end;

begin
        input;
        sort(1,1,n);
        sort(2,1,n);
        for i:=1 to n do
        begin
                if a[1,i]>a[2,i] then
                res:=res+(a[1,i]-a[2,i])*y
                else
                res:=res+(a[2,i]-a[1,i])*x;
        end;
        write(res);
end.

Download