Cod sursa(job #284793)

Utilizator frozen62iceBLue FirE frozen62ice Data 21 martie 2009 23:02:14
Problema Multimi2 Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.71 kb
//sunt 2 cazuri posibile
//   {
//   n=2*k ->  elem[i] corespunde cu elem[n-i+1] , diferenta=0
//   n=2*k+1 ,iar aici mai sunt 2 cazuri
//      {
//      n=4*k+1 -> se numara de la 2 la n
//              -> {4*k, 4*k+3} corespund cu {4*k+1, 4*k+2}
//              -> elementul 1 se pune in M sau in N , diferenta=1
//      n=4*k+3 -> se numara de la 4 la n
//              -> {4*k, 4*k+3} corespund cu {4*k+1, 4*k+2}
//              -> 1 + 2 = 3 ,diferenta=0
//      }
//   }
var f,g:text;
    n,i:longint;
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
  write(g,i,' ');
 writeln(g);
 writeln(g,n div 2);
 for i:=n div 2 +1 to n do
  write(g,i,' ');
 writeln(g);
end
 else
if n mod 4=1 then begin
 writeln(g,'1');
 writeln(g,n div 2+1);
 write(g,'1 ');
 for i:=2 to n do
  if (i mod 4=0)or(i mod 4=3) then write(g,i,' ');
 writeln(g);
 writeln(g,n div 2);
 for i:=2 to n do
  if (i mod 4=1)or(i mod 4=2) then write(g,i,' ');
 writeln(g);
end
 else
if n mod 4=3 then begin
 writeln(g,'0');
 writeln(g,n div 2+1);
 write(g,'1 2 ');
 for i:=4 to n do
  if (i mod 4=0)or(i mod 4=3) then write(g,i,' ');
 writeln(g);
 writeln(g,n div 2);
 write(g,'3 ');
 for i:=4 to n do
  if (i mod 4=1)or(i mod 4=2) then write(g,i,' ');
 writeln(g);
end
 else
if n mod 4=2 then begin
 writeln(g,'1');
 writeln(g,n div 2);
 write(g,'1 ');
 for i:=3 to n do
  if (i mod 4=0)or(i mod 4=3) then write(g,i,' ');
 writeln(g);
 writeln(g,n div 2);
 write(g,'2 ');
 for i:=3 to n do
  if (i mod 4=1)or(i mod 4=2) then write(g,i,' ');
 writeln(g);
end;

close(f);
close(g);
end.