Cod sursa(job #2339500)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 8 februarie 2019 23:47:12
Problema Oras Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.9 kb
#include <fstream>

using namespace std;
ifstream cin ("oras.in") ;
ofstream cout ("oras.out") ;

void impar ( int n , int step )
{
    if ( step == n + 1 )    return ;

    if ( step <= ( n - 3 ) / 2 )
    {
            for ( int i = 1 ; i <= step ; ++ i )   cout << '0' ;
            for ( int i = 1 ; i <= n - 2 * step ; ++ i )    cout << '1' ;
            for ( int i = 1 ; i <= step ; ++ i )   cout << '0' ;
            cout << '\n' ;
        impar( n , step + 1 ) ;
        return ;
    }
    if ( step >= ( n - 3 ) / 2 + 4 )
    {
        int q = n - step + 1 ;
            for ( int i = 1 ; i < q ; ++ i )   cout << '0' ;
            cout << '1' ;
            for ( int i = q + 1 ; i <= n - q + 1 ; ++ i )    cout << '0' ;
            for ( int i = 1 ; i < q ; ++ i )   cout << '1' ;
            cout << '\n' ;
            impar( n , step + 1 ) ;
        return ;
    }
    if ( step == ( n - 3 ) / 2 + 1 )
    {
        for ( int i = 1 ; i <= ( n - 3 ) / 2 ; ++ i )   cout << '0' ;
        cout << "010" ;
        for ( int i = 1 ; i <= ( n - 3 ) / 2 ; ++ i )   cout << '1' ;
        cout << '\n' ;
        impar( n , step + 1 ) ;
        return ;
    }
    if ( step == ( n - 3 ) / 2 + 2 )
    {
        for ( int i = 1 ; i <= ( n - 3 ) / 2 ; ++ i )   cout << '0' ;
        cout << "001" ;
        for ( int i = 1 ; i <= ( n - 3 ) / 2 ; ++ i )   cout << '1' ;
        cout << '\n' ;
        impar( n , step + 1 ) ;
        return ;
    }
    if ( step == ( n - 3 ) / 2 + 3 )
    {
        for ( int i = 1 ; i <= ( n - 3 ) / 2 ; ++ i )   cout << '0' ;
        cout << "100" ;
        for ( int i = 1 ; i <= ( n - 3 ) / 2 ; ++ i )   cout << '1' ;
        cout << '\n' ;
        impar( n , step + 1 ) ;
        return ;
    }

}






int main ()
{
 int16_t n ; cin >> n ;
    if ( n % 2 )    impar( n , 1 ) ;
    else            cout << -1 ;
      return 0 ;
}