Cod sursa(job #131223)

Utilizator TabaraTabara Mihai Tabara Data 3 februarie 2008 14:04:46
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.76 kb
// 50 puncte
#include <stdio.h>

#define in "multimi2.in"
#define out "multimi2.out"
#define NMAX 1000001

#include <vector>
#include <algorithm>
using namespace std;

int n;
vector<int> A;
vector<int> B;

int main()
{
    freopen( in, "r", stdin );    
    freopen( out, "w", stdout );
    
    scanf( "%d", &n );
    int i;    
    if ( n % 4 == 0 )
    {
         for ( i = 1; i <= n; ++i )
         {
             if ( i % 4 == 0 || i % 4 == 3 ) A.push_back( i );
             else B.push_back( i );
         }
         printf( "%d\n", 0 );
    }
    else if ( n % 4 == 1 )
    {
         A.push_back( 1 );    
         for ( i = 2; i <= n; ++i )
         {
             if ( i % 4 == 0 || i % 4 == 3 ) A.push_back( i );
             else B.push_back( i );         
         }

         printf( "%d\n", 1 );
    }
    else if ( n % 4 == 2 )
    {
         A.push_back( 1 );
         B.push_back( 2 );
         for ( i = 3; i <= n; ++i )
         {
             if ( i % 4 == 0 || i % 4 == 3 ) A.push_back( i );
             else B.push_back( i );         
         }                  
         printf( "%d\n", 1);
    }
    
    else if ( n % 4 == 3 )
    {
         A.push_back( 1 );
         A.push_back( 2 );
         B.push_back( 3 );
         for ( i = 4; i <= n; ++i )
         {
             if ( i % 4 == 0 || i % 4 == 3 ) A.push_back( i );
             else B.push_back( i );         
         }                  
         printf( "%d\n", 0);
    }
    
    printf( "%d\n", A.size() );
    for ( i = 0; i < A.size(); ++i )
        printf( "%d ", A[i] );
    printf( "\n%d\n", B.size() );
    for ( i = 0; i < B.size(); ++i )
        printf( "%d ", B[i] );    
    return 0;
}