Cod sursa(job #461266)

Utilizator SpiderManSimoiu Robert SpiderMan Data 6 iunie 2010 09:38:44
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <cstdio>

const char FIN[] = "multimi2.in", FOU[] = "multimi2.out";

int N;

int main()
{
    freopen (FIN , "r" , stdin);
    freopen (FOU , "w" , stdout);

    scanf("%d", &N);

    switch ( N & 3 )
    {
    case 0:

        printf("0\n%d\n", N >> 1);

        for (int i = 0; i < N >> 2 ; ++i)
            printf("%d %d ", ( i << 2 ) + 1 , ( i << 2 ) + 4);

        printf("\n%d\n", N >> 1);

        for (int i = 0; i < N >> 2 ; ++i)
            printf("%d %d ", ( i << 2 ) + 2 , ( i << 2 ) + 3);

        break;

    case 1:

        printf("1\n%d\n", ( N >> 1 ) + 1);

        printf("1 ");

        for (int i = 0; i < N - 1 >> 2; ++i)
            printf("%d %d ", ( i << 2 ) + 2, ( i << 2 ) + 5);

        printf("\n%d\n", N >> 1);

        for (int i = 0; i < N - 1 >> 2; ++i)
            printf("%d %d ", ( i << 2 ) + 3, ( i << 2 ) + 4);

        break;

    case 2:

        printf("1\n%d\n", N >> 1);

        printf("1 ");

        for (int i = 0; i < N - 2 >> 2; ++i)
            printf("%d %d ", ( i << 2 ) + 3, ( i << 2 ) + 6);

        printf("\n%d\n", N >> 1);

        printf("2 ");

        for (int i = 0; i < N - 2 >> 2; ++i)
            printf("%d %d ", ( i << 2 ) + 4, ( i << 2 ) + 5);

        break;

    case 3:

        printf("0\n%d\n", ( N >> 1 ) + 1);

        printf("1 2 ");

        for (int i = 0; i < N - 3 >> 2; ++i)
            printf("%d %d ", ( i << 2 ) + 4, ( i << 2 ) + 7);

        printf("\n%d\n", N >> 1);

        printf("3 ");

        for (int i = 0; i < N - 3 >> 2; ++i)
            printf("%d %d ", ( i << 2 ) + 5, ( i << 2 ) + 6);

        break;

    }

    return 0;
}