Cod sursa(job #1779871)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 15 octombrie 2016 17:37:21
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

int m, r[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

void read();
bool next_permutation(int[], int, int);
void swap(int &, int &);

int main()
{
    read();

    ofstream fout ("permutari.out");
    do{
        for (int i = 1; i <= m; ++i)
            fout << r[i] << " ";
        fout << "\n";
    }while(next_permutation(r, 1, m));
    return 0;
}

void read(){
    ifstream fin ("permutari.in");
    fin >> m;
    fin.close();
}

bool next_permutation(int v[], int p, int n){
    int i, j;
    for (i = n - 1; i >= p && v[i] > v[i+1]; --i);
    if (i == p-1)
        return false;
    for (j = n; j >= p && v[j] < v[i]; --j);
    swap(v[i], v[j]);
    j = i + 1;
    int k = n;
    for (; k > j; --k, ++j)
        swap(v[j], v[k]);
    return true;
}

void swap(int &x, int &y){
    int aux = x;
    x = y;
    y = aux;
}