Cod sursa(job #102909)

Utilizator astronomyAirinei Adrian astronomy Data 14 noiembrie 2007 19:41:00
Problema Multimi2 Scor Ascuns
Compilator cpp Status done
Runda Marime 1.2 kb
#include <stdio.h>
#include <vector>
using namespace std;

#define pb push_back

int N;
vector<int> A, B;

int main(void)
{
    freopen("multimi2.in", "rt", stdin);
    freopen("multimi2.out", "wt", stdout);

    int i, j, k;

    scanf("%d ", &N);

    if(N%4 == 0)
    {
        printf("0\n");
        for(i = 1; i <= N; i++)
         if(i%4 == 1 || i%4 == 0) A.pb(i);
         else B.pb(i);
    }
    if(N%4 == 1)
    {
        printf("1\n");
        for(A.pb(1), i = 2; i <= N; i++)
         if((i-1)%4 == 1 || (i-1)%4 == 0) A.pb(i);
         else B.pb(i);
    }
    if(N%4 == 2)
    {
        printf("1\n");
        for(A.pb(1), B.pb(2), i = 3; i <= N; i++)
         if((i-2)%4 == 1 || (i-2)%4 == 0) A.pb(i);
         else B.pb(i);
    }
    if(N%4 == 3)
    {
        printf("0\n");
        for(i = 4; i <= N; i++)
         if((i-3)%4 == 1 || (i-3)%4 == 0) A.pb(i);
         else B.pb(i);
        A.pb(1), A.pb(2), B.pb(3);
    }

    for(printf("%d\n", A.size()), i = 0; i < A.size(); i++)
        printf("%d ", A[i]);
    for(printf("\n%d\n", B.size()), i = 0; i < B.size(); i++)
        printf("%d ", B[i]);
    printf("\n");
    
    return 0;
}