var n, s, i : longint; a, t : array[0..100005] of longint; procedure mergesort(l, r : longint); var mid, p, i, j : longint; begin if (l = r) then exit; mid := (l + r) div 2; p := l; i := l; j := mid + 1; mergesort(l, mid); mergesort(mid + 1, r); while (i <= mid) and (j <= r) do begin if (a[j] < a[i]) then begin s := s + mid - i + 1; t[p] := a[j]; p := p + 1; j := j + 1; end else begin t[p] := a[i]; p := p + 1; i := i + 1; end; end; while (i <= mid) do begin t[p] := a[i]; p := p + 1; i := i + 1; end; while (j <= r) do begin t[p] := a[j]; p := p + 1; j := j + 1; end; for i := l to r do a[i] := t[i]; end; begin read(n); for i := 1 to n do read(a[i]); writeln; writeln; mergesort(1, n); writeln(s); end.
输入:6
2 6 3 4 5 1
输出:1
