Cod sursa(job #782468)

Utilizator andrei_toaderToader Andrei Sorin andrei_toader Data 27 august 2012 23:06:12
Problema Multimi2 Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.97 kb
program multimi2;
var f,g:text;
    n,i,nr1,nr2:longint;
    m1,m2:array[1..500010] of longint;
    bufin,bufout:array[1..65000] of byte;

begin
 assign (f,'multimi2.in'); reset (f);
 assign (g,'multimi2.out'); rewrite (G);
 settextbuf (F,bufin); settextbuf (g,bufout);
 read (f,n);
 if n mod 4=0 then
 begin
  writeln (G,0);
  i:=1;
  while i<=n do
  begin
   inc (nr1,2);
   m1[nr1-1]:=i; m1[nr1]:=i+3;
   inc (nr2,2);
   m2[nr2-1]:=i+1; m2[nr2]:=i+2;
   i:=i+4;
  end;
  writeln (g,nr1);
  for i:=1 to nr1 do
   write (g,m1[i],' ');
  writeln (g);
  writeln (g,nr2);
  for i:=1 to nr2 do
   write (g,m2[i],' ');
 end
 else
  if n mod 4=1 then
  begin
   writeln (g,1);
   i:=2;
  nr1:=1; m1[nr1]:=1;
  while i<=n do
  begin
   inc (nr1,2);
   m1[nr1-1]:=i; m1[nr1]:=i+3;
   inc (nr2,2);
   m2[nr2-1]:=i+1; m2[nr2]:=i+2;
   inc (i,4);
  end;
  writeln (G,nr1);
  for i:=1 to nr1 do
   write (g,m1[i], ' ');
  writeln (g);
  writeln (g,nr2);
  for i:=1 to nr2 do
   writeln (g,m2[i], ' ');
  end
  else
   if n mod 4=2 then
   begin
    writeln (G,1);
    i:=3; nr1:=1; nr2:=1;
    m1[nr1]:=1; m2[nr2]:=2;
    while i<=n do
    begin
    inc (nr1,2);
    m1[nr1-1]:=i; m1[nr1]:=i+3;
    inc (nr2,2);
    m2[nr2-1]:=i+1; m2[nr2]:=i+2;
    inc (i,4);
    end;
    writeln (g,nr1);
    for i:=1 to nr1 do
     write (g,m1[i],' ');
    writeln (g);
    writeln (g,nr2);
    for i:=1 to nr2 do
     write (G,m2[i], ' ');
   end
   else
    if n mod 4=3 then
    begin
     writeln (G,0);
     nr1:=2; m1[1]:=1; m1[2]:=2; nr2:=1; m2[1]:=3;
     i:=4;
     while i<=n do
     begin
      inc (nr1,2);
      m1[nr1-1]:=i; m1[nr1]:=i+3;
      inc (nr2,2);
      m2[nr2-1]:=i+1; m2[nr2]:=i+2;
      inc (i,4);
     end;
     writeln (G,nr1);
     for i:=1 to nr1 do
      write (g,m1[i],' ');
     writeln (G);
     writeln (G,nr2);
     for i:=1 to nr2 do
      write (g,m2[i], ' ');
    end;
    close (f); close (g);
end.