http://acm.pku.edu.cn/JudgeOnline/problem?id=1147
Код:
program PKU1147;
const maxn = 3010;
type integer = longint;
var a, next: array[1 .. maxn] of integer;
s: array[0 .. 1] of integer;
n, i, j, u, v, k: integer;
begin
read(n);
s[0] := 0; s[1] := 0;
for i := 1 to n do begin
read(a[i]);
inc(s[a[i]]);
end;
u := s[0]; v := 0;
for i := 1 to n do
if a[i] = 1 then begin
u := u + 1;
next[u] := i;
end else begin
v := v + 1;
next[v] := i;
end;
k := 0;
while k < n do begin
u := 1;
repeat
u := next[u];
k := k + 1;
write(a[u], ' ');
until u = 1;
end;
writeln;
end.