var n, t, i : longint; a, b : array[0..110] of longint; isUse : array[0..110] of boolean; function isSmall( ):boolean; var i : longint; begin for i := 1 to n do if a[i] <> b[i] then exit(a[i] < b[i]); exit(false); end; function getPermutation(pos : longint) : boolean; var i : longint; begin if pos > n then exit(isSmall( )); for i := 1 to n do begin if isUse[i] = false then begin b[pos] := i; isUse[i] := true; if getPermutation(pos + 1) = true then exit(true); isUse[i] := false; end; end; exit(false); end; procedure getNext( ); var i : longint; begin for i := 1 to n do isUse[i] := false; getPermutation(1); for i := 1 to n do a[i] := b[i]; end; begin read(n, t); for i := 1 to n do read(a[i]); for i := 1 to t do getNext( ); for i := 1 to n do begin write(a[i]); if i = n then writeln else write(' '); end; end.
输入1:6 10 1 6 4 5 3 2
输出1:1(3 分)
输入2:6 200 1 5 3 4 2 6
输出2:2(5 分)