题目描述
猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i
var
i,n,t:longint;
a:array[0..100000] of longint;
h:array[0..100000] of longint;
procedure merge(l,r:longint);
var i,mid,left,right:longint;
begin
if l>=r then exit;
mid:=(l+r)>>1;
merge(l,mid); merge(mid+1,r);
left:=l; right:=mid+1;
for i:=l to r do begin
if (left<=mid)and((a[left]<=a[right])or(right>r)) then begin
h[i]:=a[left];
left:=left+1;
end
else begin
h[i]:=a[right];
right:=right+1;
t:=t+(mid-left+1);
end;
end;
for i:=l to r do a[i]:=h[i];
end;
begin
readln(n);
for i:=1 to n do read(a[i]);
merge(1,n);
writeln(t);
end.