Cod sursa(job #110420)

Utilizator DastasIonescu Vlad Dastas Data 26 noiembrie 2007 18:55:13
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.14 kb
#include <iostream>

FILE *in = fopen("multimi2.in","r"), *out = fopen("multimi2.out","w");

int n;

#define fout out

int main()
{
    fscanf(in, "%d", &n);

    if ( n == 2 )
    {
        fprintf(fout, "%d\n", 1);
        fprintf(fout, "%d\n%d\n%d\n%d\n", 1, 1, 1, 2);
        return 0;
    }
    else if ( n == 3 )
    {
        fprintf(fout, "%d\n", 0);
        fprintf(fout, "%d\n%d %d\n%d\n%d\n", 2, 1, 2, 1, 3);
        return 0;
    }

    if ( n % 4 == 0 )
    {
        fprintf(fout, "%d\n", 0);
        fprintf(fout, "%d\n", n / 2);
        for ( int i = 1; i <= n; ++i )
            if ( i % 4 == 1 || i % 4 == 0 )
                fprintf(fout, "%d ", i);

        fprintf(fout, "\n%d\n", n / 2);
        for ( int i = 1; i <= n; ++i )
            if ( i % 4 == 2 || i % 4 == 3 )
                fprintf(fout, "%d ", i);
    }
    else if ( n % 4 == 1 )
    {
        fprintf(fout, "%d\n", 1);
        fprintf(fout, "%d\n%d ", n / 2 + 1, 1);
        for ( int i = 2; i <= n ; ++i )
            if ( i % 4 == 1 || i % 4 == 0 )
                fprintf(fout, "%d ", i);

        fprintf(fout, "\n%d\n", n / 2 - 1);
        for ( int i = 2; i <= n ; ++i )
            if ( i % 4 == 2 || i % 4 == 3 )
                fprintf(fout, "%d ", i);
    }
    else if ( n % 4 == 2 )
    {
        fprintf(fout, "%d\n", 1);
        fprintf(fout, "%d\n%d ", n / 2, 1);
        for ( int i = 3; i <= n ; ++i )
            if ( i % 4 == 0 || i % 4 == 1 )
                fprintf(fout, "%d ", i);

        fprintf(fout, "\n%d\n%d ", n / 2, 2);
        for ( int i = 3; i <= n ; ++i )
            if ( i % 4 == 2 || i % 4 == 3 )
                fprintf(fout, "%d ", i);
    }
    else if ( n % 4 == 3 )
    {
        fprintf(fout, "%d\n", 0);
        fprintf(fout, "%d\n%d %d ", n / 2 + 1, 1, 2);
        for ( int i = 4; i <= n ; ++i )
            if ( i % 4 == 0 || i % 4 == 1 )
                fprintf(fout, "%d ", i);

        fprintf(fout, "\n%d\n%d ", n / 2 - 1, 3);
        for ( int i = 4; i <= n ; ++i )
            if ( i % 4 == 2 || i % 4 == 3 )
                fprintf(fout, "%d ", i);
    }



	return 0;
}