Cod sursa(job #129259)

Utilizator marinMari n marin Data 28 ianuarie 2008 20:42:34
Problema Multimi2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.28 kb
/*


1 2 3 4 5 6 7 8 9 10 11
1 11 3 9  5 6 7
2 10 4 8

*/
#include <stdio.h>
long int n,i;
int main(){
  FILE *f = fopen("multimi2.in","r");
  fscanf(f,"%ld",&n);
  fclose(f);
  FILE *g = fopen("multimi2.out","w");
  if (n%4==3){

  if (((n/2+2)/2)%2==1) {
    fprintf(g,"%ld\n",0l);
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=n/2+1;i++)
      if (2*i-1 != (n/2+2)/2  )
	fprintf(g,"%ld ",2*i-1);
    fprintf(g,"\n");
    fprintf(g,"%ld\n",n/2+1);
    for (i=1;i<=n/2;i++)
      fprintf(g,"%ld ",2*i);
    fprintf(g,"%ld ",(n/2+2)/2);
  } else {
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//1 15 3 13 5 11 8 4   7 8 9
//2 14   12 6 10 7 9

    fprintf(g,"%ld\n",0l);
    fprintf(g,"%ld\n",n/2+1);
    for (i=1;i<=(n-3)/2;i++){
      fprintf(g,"%ld %ld ",2*i-1,n+1-2*i+1);
    fprintf(g,"%ld %ld\n",n/2+1,(n/2+1)/2);
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=(n-3)/2;i++){
      if (2*i!=(n/2+1)/2) {
	fprintf(g,"%ld ",2*i);
      }
      fprintf(g,"%ld ",n+1-2*i);
    }
    fprintf(g,"%ld %ld ",n/2,n/2+2);

    }
  }

/*    fprintf(g,"%ld\n",0l);
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=n/2+1;i++)
      if (2*i-1 != (n/2+2)/2  )
	fprintf(g,"%ld ",2*i-1);
    fprintf(g,"\n");
    fprintf(g,"%ld\n",n/2+1);
    for (i=1;i<=n/2;i++)
      fprintf(g,"%ld ",2*i);
    fprintf(g,"%ld ",(n/2+2)/2);*/
  } else
  if (n%4==1) {//30
    fprintf(g,"%ld\n",1l);
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=n/2;i++)
      if (2*i != (n/2+1)/2)
	fprintf(g,"%ld ",2*i);
    fprintf(g,"%ld\n",n/2+1);
    fprintf(g,"%ld\n",n/2+1);
    for (i=1;i<=n/2+1;i++)
      if (2*i-1 != n/2+1)
	fprintf(g,"%ld ",2*i-1);
    fprintf(g,"%ld\n",(n/2+1)/2);
  } else if (n%4==0) {


    fprintf(g,"%ld\n%ld\n",0l,n/2);
    for (i=1;i<=n/4;i++)
      fprintf(g,"%ld %ld ",2*i,n+1-2*i);
    fprintf(g,"\n");
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=n/2;i++)
      fprintf(g,"%ld %ld ",2*i-1,n+1-2*i+1);


  } else if (n%4==2) {
    fprintf(g,"%ld\n",1l);
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=n/4;i++)
      fprintf(g,"%ld %ld ",2*i-1,n-(2*i-1)+1);
    fprintf(g,"%ld",n/2+1);
    fprintf(g,"\n");
    fprintf(g,"%ld\n",n/2);
    for (i=1;i<=n/4;i++)
      fprintf(g,"%ld %ld ",2*i,n-(2*i)+1);
    fprintf(g,"%ld",n/2);
  }
  fclose(g);
  return 0;
}