Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$APPTYPE CONSOLE}
- uses SysUtils;
- const
- maxn = 200000;
- var n, i : integer;
- a, b : array[1..maxn] of integer;
- procedure merge(l, r, m : integer);
- var p1, p2, res, i : integer;
- begin
- p1 := l; p2 := m + 1;
- res := 0;
- while (p1 <= m) and (p2 <= r) do begin
- if (a[p1] <= a[p2]) then begin
- b[res] := a[p1];
- inc(p1); inc(res);
- end else begin
- b[res] := a[p2];
- inc(p2); inc(res);
- end;
- end;
- while (p1 <= m) do begin
- b[res] := a[p1];
- inc(res); inc(p1);
- end;
- while (p2 <= r) do begin
- b[res] := a[p2];
- inc(p2); inc(res);
- end;
- for i := l to r do begin
- a[i] := b[i - l];
- end;
- end;
- procedure mergesort(l, r : integer);
- var m : integer;
- begin
- if (l >= r) then exit;
- m := (l + r) div 2;
- mergesort(l, m);
- mergesort(m + 1, r);
- merge(l, r, m);
- end;
- begin
- reset(input, 'input.txt');
- rewrite(output, 'output.txt');
- read(n);
- for i := 1 to n do
- read(a[i]);
- mergesort(1, n);
- for i := 1 to n do
- write(a[i], ' ');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement