Cod sursa(job #1201541)

Utilizator xtreme77Patrick Sava xtreme77 Data 25 iunie 2014 13:42:22
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.8 kb
#include <cstdio>
#include <algorithm>
#define rint register int

const char IN[]="multimi2.in";
const char OUT[]="multimi2.out";
const int MAX = 1000100;

using namespace std;

int mul1[MAX],mul2[MAX],l1,l2,n;

int main()
{
    freopen( IN, "r" ,stdin );
    freopen( OUT, "w" ,stdout );
    scanf("%d",&n);
    for( rint i=n; i>=4; i-=4){
        mul1[++l1]=i;
        mul1[++l1]=i-3;
        mul2[++l2]=i-2;
        mul2[++l2]=i-1;
    }
    if( n%4 == 0){
        printf("0\n");
        sort( mul1 + 1, mul1 + l1 + 1 );
        sort( mul2 + 1 , mul2 + l2 + 1 );
        printf("%d\n",l1);
        for(rint i=1;i<=l1;++i)printf("%d ",mul1[i]);
        printf("\n%d\n",l2);
        for(rint i=1;i<=l2;++i)printf("%d ",mul2[i]);
    }
    else if ( n%4 == 1 ){
        printf("1\n");
        mul1[++l1]=1;
        sort( mul1 + 1, mul1 + l1 + 1 );
        sort( mul2 + 1 , mul2 + l2 + 1 );
        printf("%d\n",l1);
        for(rint i=1;i<=l1;++i)printf("%d ",mul1[i]);
        printf("\n%d\n",l2);
        for(rint i=1;i<=l2;++i)printf("%d ",mul2[i]);
    }
    else if (n%4 == 2){
        printf("1\n");
        mul1[++l1]=1;
        mul2[++l2]=2;
        sort( mul1 + 1, mul1 + l1 + 1 );
        sort( mul2 + 1 , mul2 + l2 + 1 );
        printf("%d\n",l1);
        for(rint i=1;i<=l1;++i)printf("%d ",mul1[i]);
        printf("\n%d\n",l2);
        for(rint i=1;i<=l2;++i)printf("%d ",mul2[i]);
    }
    else {
        printf("0\n");
        mul1[++l1]=1;
        mul1[++l1]=2;
        mul2[++l2]=3;
        sort( mul1 + 1, mul1 + l1 + 1 );
        sort( mul2 + 1 , mul2 + l2 + 1 );
        printf("%d\n",l1);
        for(rint i=1;i<=l1;++i)printf("%d ",mul1[i]);
        printf("\n%d\n",l2);
        for(rint i=1;i<=l2;++i)printf("%d ",mul2[i]);
    }
    return 0;
}