Cod sursa(job #2642233)

Utilizator teofilotopeniTeofil teofilotopeni Data 14 august 2020 10:02:08
Problema Submultimi Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;

int v[19];

int fact (int n)
{
    if (n > 1)
        return n * fact(n - 1);
    else
        return 1;
}

int main()
{
    ifstream in("submultimi.in");
    ofstream out("submultimi.out");
    int n, m, i, j, k;
    bool terminat;
    in >> n;
    for (m = n; m > 0;)
    {
        for (i = 1; i <= n; i++)
        {
            for (j = n - m + 1; j <= i; j++)
                out << j << " ";
            if (n - m + 1 <= i)
                out << "\n";
        }
        m--;

        if (m > 1)
        {
            terminat = false;
            for (i = 1; i <= m; i++)
                v[i] = i;
            v[m + 1] = n + 1;

            j = m;
            for (k = 2; k < fact(n) / (fact(m) * fact(n - m)); k++)
            {
                while (j > 0 && v[j] >= v[j + 1] - 1)
                    j--;
                v[j]++;
                for (i = j + 1; i <= m; i++)
                    v[i] = v[i - 1] + 1;
                for (i = 1; i <= m; i++)
                    out << v[i] << " ";
                j = m;
                out << "\n";
            }
        }
    }
    return 0;
}