Cod sursa(job #3360339)

Utilizator Andrei563Secara Andrei Tudor Andrei563 Data 12 iulie 2026 17:49:17
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream cin ("permutari.in");
ofstream cout ("permutari.out");


int poz1(int n, vector<int>& v)
{
  int p=0;
  for (int i=n-1;i>=1;--i)
  {
    if (v[i]<v[i+1])
    {
      p=i;
      break;
    }
  }
  return p;
}

int poz2(int n, vector<int>& v, int piv)
{
  int p=piv;
  for (int j=n;j>piv;--j)
  {
    if (v[j]>v[piv])
    {
      p=j;
      break;
    }
  }
  return p;
}

int main ()
{
  int n;
  cin >> n;
  vector<int> v(n+1);
  for (int i=1;i<=n;++i)
  {
    v[i]=i;
    cout << v[i] << ' ';
  }
  cout << '\n';

  while (true)
  {
    int piv=poz1(n,v);
    if (piv==0)
      break;
    int j=poz2(n,v,piv);
    swap(v[piv],v[j]);
    reverse(v.begin()+piv+1, v.begin()+n+1);

    for (int i=1;i<=n;++i)
    {
      cout<<v[i]<<" ";
    }
    cout << '\n';
  }
}