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.