p2386.pas

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 59 行

PAS
59
字号
PROGRAM p2386;

CONST
        maxn=500000;

VAR
        n                       :Longint;
        data,temp               :array[1..maxn]of Longint;

PROCEDURE Readin;
var
        i                       :Longint;
begin
readln(n);
if (n=0) then halt;
for i:=1 to n do readln(data[i]);
end;

FUNCTION Sort(left,right:Longint):Int64;
var
        c                       :Int64;
         mid,i,j,t,leave        :Longint;
begin
c:=0;
if (left<right) then
        begin
        mid:=(left+right) div 2;
        c:=Sort(left,mid)+Sort(mid+1,right);
        t:=0; i:=left; j:=mid+1; leave:=right-left+1;

        while (t<leave) do
                begin
                inc(t);
                if (i<=mid) and ( (j>right) or (data[i]<=data[j])) then
                        begin
                        temp[t]:=data[i];
                        inc(i);
                        end else
                        begin
                        temp[t]:=data[j];
                        inc(j);
                        inc(c,mid-i+1);
                        end;
                end;

        for i:=1 to leave do data[left+i-1]:=temp[i];
        end;
Sort:=c;
end;

BEGIN
//assign(input,'p.in');
//reset(input);
while true do
        begin
        Readin;
        Writeln(Sort(1,n));
        end;
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?