Cod sursa(job #116874)

Utilizator borsosborsos adrian borsos Data 19 decembrie 2007 19:14:39
Problema Multimi2 Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.85 kb
const max=1000000;
var f,g:text;
y,n,poz,i,nrtrue:longint;
a:array[1..max] of boolean;
gaus,x:real;
begin
assign(f,'multimi2.in'); reset(f);
assign(g,'multimi2.out'); rewrite(g);
readln(f,n);
fillchar(a,sizeof(a),false);
case 1+n mod 4 of
1: begin
    i:=1;
    while i <= n div 2 - 1 do begin
        a[i]:=true;
        a[n-i+1]:=true;
        i:=i+2;
                                  end;
    writeln(g,'0');
    writeln(g,n div 2);
    for i := 1 to n do
           if a[i]=true then write(g,i,' ');
    writeln(g,n div 2);
    for i := 1 to n do
           if a[i]=false then write(g,i,' ');
    end;
2: begin
    a[1]:=true;
    i:=2;
    while i <=n div 2 do begin
         a[i]:=true;
         a[n-i+2]:=true;
         i:=i+2;
                         end;
    writeln(g,'1');
    writeln(g,n div 2 +1);
    for i := 1 to n do
             if a[i] = true then write(g,i,' ');
    writeln(g,n div 2);
    for i := 1 to n do
             if a[i] = false then write(g,i,' ');
   end;
3: begin
    a[1]:=true;
    i:=3;
    while i<= n div 2 do  begin
            a[i]:=true;
            a[n-i+3]:=true;
            i:=i+2;
                            end;
    writeln(g,'1');
    writeln(g,n div 2);
    for i := 1 to n do
           if a[i]=true then write(g,i,' ');
    writeln(g,n div 2);
    for i := 1 to n do
            if a[i]=false then write(g,i,' ');
   end;
4: begin
    a[1]:=true; a[2]:=true;
    i:=4;
    while i <=n div 2 +1 do begin
             a[i]:=true;
             a[n-i+4]:=true;
             i:=i+2;
                             end;
    writeln(g,'0');

    writeln(g,n div 2 +1);

    for i:= 1 to n do
          if a[i] = true then write(g,i,' ');
    writeln(g,n div 2);
    for i := 1 to n do
          if a[i] = false then write(g,i,' ');
   end;
end;
close(f);
close(g);
end.