Cod sursa(job #284649)

Utilizator danalex97Dan H Alexandru danalex97 Data 21 martie 2009 21:05:40
Problema Multimi2 Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 3.19 kb
program multimi;
var i,c,sc,n:longint;
    f,g:text;
begin
assign(f,'multimi2.in');
reset(f);
assign(g,'multimi2.out');
rewrite(g);
read(f,n);
if n mod 4=0 then
  begin                                         {}
    writeln(g,'0');
    writeln(g,n div 2);
    for i:=1 to n div 2 do
      if i mod 2=1 then write(g,i,' ',n-i+1,' ');
    writeln(g);
    writeln(g,n div 2);
    for i:=1 to n div 2 do
      if i mod 2=0 then write(g,i,' ',n-i+1,' ');
  end;                                          {}
if (n mod 4=2) and (n>2) then                               {}
  begin
    writeln(g,'1');
    writeln(g,n div 2);
    write(g,(n-1) div 2+2,' ');
    for i:=1 to (n-1) div 2 do
      if i mod 2=1 then write(g,i,' ',n-i+1,' ');
    writeln(g);
    writeln(g,n div 2);
    write(g,(n-1) div 2+1,' ');
    for i:=1 to (n-1) div 2 do
      if i mod 2=0 then write(g,i,' ',n-i+1,' ');
  end;
if n mod 4=1 then                             {}
  begin
    writeln(g,'1');
    writeln(g,(n-1) div 2+1);
    sc:=(n-1) div 2;
    write(g,sc+1,' ');
    c:=0;
    for i:=1 to (n-1) div 2 do
      if (i mod 2=1) and (c<sc-1) then begin
                                         write(g,i+1,' ',n-i+1,' ');
                                         inc(c,2);
                                       end
        else
      if (i mod 2=1) then              begin
                                         write(g,i,' ',n-i+1,' ');
                                         inc(c,2);
                                       end;
    c:=0;
    writeln(g);
    writeln(g,(n-1) div 2);
    for i:=1 to (n-1) div 2 do
      if (i mod 2=0) and (c<sc-1) then begin
                                                  write(g,i-1,' ',n-i+1,' ');
                                                  inc(c,2);
                                                end
    else
      if (i mod 2=0) then              begin
                                         write(g,i,' ',n-i+1,' ');
                                         inc(c,2);
                                               end;
  end;                                             {}
if (n mod 4=3) and (n>3) then                      {}
  begin
    writeln(g,'0');
    writeln(g,(n-1) div 2+1);
    sc:=(n-1) div 2-1;
    for i:=(n-1) div 2+1 downto 1 do
      if (i mod 2=1) and (c<(sc-1) div 2) then
        begin
          write(g,i-1,' ',n-i+1,' ');
          c:=c+1;
        end
      else
      if (i mod 2=1) then
        begin
          write(g,i,' ',n-i+1,' ');
          c:=c+1;
        end;
    writeln(g);
    writeln(g,(n-1) div 2);
    c:=0;
    for i:=(n-1) div 2+1 downto 1 do
      if (i mod 2=0) and (c<(sc-1) div 2) then
        begin
          write(g,i+1,' ',n-i+1,' ');
          c:=c+1;
        end
      else
      if (i mod 2=0) then
        begin
          write(g,i,' ',n-i+1,' ');
          c:=c+1;
        end;
  end;
if n=2 then
  begin
    writeln(g,'1');
    writeln(g,'1');
    writeln(g,'1');
    writeln(g,'1');
    writeln(g,'2');
  end;
if n=3 then
  begin
    writeln(g,'0');
    writeln(g,'2');
    writeln(g,'1 2');
    writeln(g,'1');
    writeln(g,'3');
  end;
close(f);
close(g);
end.