Cod sursa(job #3360597)

Utilizator Alberates10Albert Mates Alberates10 Data 15 iulie 2026 11:09:25
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
void inv(vector<int>& el,int j) {
    int stanga = j;
    int dreapta = el.size() - 1;
    while (stanga < dreapta) {
        swap(el[stanga],el[dreapta]);
        stanga++;
        dreapta--;
    }
}

int main()
{
    int n;
    fin>>n;
    vector<int> el(n+1);
    for (int i=1;i<=n;i++)
    {
        el[i]=i;
        fout<<el[i]<<" ";
    }
    fout<<"\n";
    while (true)
    {
        bool st=false;
        for (int i=n-1;i>0;i--)
        {
            if (el[i]<el[i+1])
            {
                st=true;
                for (int j=n;j>i;j--)
                {
                    if (el[j]>el[i])
                    {
                       swap(el[i],el[j]);
                        inv(el,i+1);
                        break;
                    }
                }
                for (int y=1;y<=n;y++)
                {
                    fout<<el[y]<<" ";
                }
                fout<<"\n";
                break;
            }
        }
        if (st==false)
        {
            return 0;
        }
    }
}