Untitled

 avatar
user_1066898782
pascal
4 years ago
687 B
30
Indexable
var n, i, k, a, b: Integer;
 s:string;
procedure Swap(var X, Y: char); 
var
 Temp: char;
begin
 Temp := X; X := Y; Y := Temp;
end;

begin
    readln(n);
    for i:=1 to n div 2 do s:=s+'0';
    for i:=1 to n div 2 do s:=s+'1';
    repeat
        writeln(s);
        i:=n-1;
        while (i>0) and (s[i]>=s[i + 1]) do dec(i);
        if i>0 then 
        begin
            k:=n;
            while s[k] <= s[i] do dec(k); 
            Swap(s[k],s[i]); 
            a:=i+1; b:=n; 
            while a<b do
            begin
                Swap(s[a],s[b]); 
                Inc(a); 
                Dec(b);
            end;
        end;
    until i=0;
end.
Editor is loading...