Cod sursa(job #1059614)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 16 decembrie 2013 20:11:13
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <cstdio>

using namespace std;

int sol1[1000005],sol2[1000005],N;

inline void Complete(int i, int j)
{
    int half=((N+i-1)>>1);
    while(i<=half)
    {
        if(i&1)
        {
            sol1[++sol1[0]]=i;
            sol1[++sol1[0]]=j;
        }
        else
        {
            sol2[++sol2[0]]=i;
            sol2[++sol2[0]]=j;
        }
        ++i; --j;
    }
}

int main()
{
    int rest,i,j;
    freopen ("multimi2.in","r",stdin);
    freopen ("multimi2.out","w",stdout);
    scanf("%d", &N);
    rest=(N&3);
    if(rest==0)
    {
        printf("0\n");
        Complete(1,N);
    }
    else
        if(rest==1)
        {
            printf("1\n");
            sol1[++sol1[0]]=1;
            Complete(2,N);
        }
        else
            if(rest==2)
            {
                printf("1\n");
                sol1[++sol1[0]]=1;
                sol2[++sol2[0]]=2;
                Complete(3,N);
            }
            else
            {
                printf("0\n");
                sol1[++sol1[0]]=1;
                sol1[++sol1[0]]=2;
                sol2[++sol2[0]]=3;
                Complete(4,N);
            }
    printf("%d\n", sol1[0]);
    for(i=1;i<=sol1[0];++i)
        printf("%d ", sol1[i]);
    printf("\n");

    printf("%d\n", sol2[0]);
    for(i=1;i<=sol2[0];++i)
        printf("%d ", sol2[i]);
    printf("\n");
    return 0;
}