Cod sursa(job #366518)

Utilizator alexandru92alexandru alexandru92 Data 22 noiembrie 2009 09:04:28
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
/* 
 * File:   main.cpp
 * Author: virtualdemon
 *
 * Created on November 22, 2009, 8:38 AM
 */
#include <fstream>
#include <cstdlib>
#include <iterator>
#include <algorithm>

/*
 * 
 */
using namespace std;
int main(int argc, char** argv)
{int n, m, i, k;
 int *s;
    ifstream in("combinari.in");
    in>>n>>m;
    if( m > n )
    {ofstream out("combinari.out");
        out<<"Error: Invalid n: "<<n<<" and m:"<<m;
        return 1;
    }
    s=(int*)calloc( m, sizeof(int) );
    if( n == m )
    {ofstream out("combinari.out");
        for( i=1; i <= n; ++i )
            out<<i<<' ';
        return EXIT_SUCCESS;
    }
    if( 1 == m )
    {ofstream out("combinari.out");
        for( i=1; i <= n; ++i )
            out<<i<<'\n';
        return EXIT_SUCCESS;
    }
    ofstream out("combinari.out");
    k=0;
    do
    {
        if( 0 == k )
        {
            s[k]+=1;
            if( s[k] > n )
                break;
        }
        else {
                if( s[k] )
                    s[k]+=1;
                else s[k]=s[k-1]+1;
                if( s[k] > n )
                {
                    s[k]=0;
                    --k;
                    continue;
                }
            }
        if( k == m-1 )
        {
            for( i=0; i <= k; ++i )
                out<<s[i]<<' ';
            out<<'\n';
        }
        else ++k;
    }while( k >= 0 );
    free(s);
    return (EXIT_SUCCESS);
}