Pagini recente » Cod sursa (job #3360338) | Cod sursa (job #3360358) | Cod sursa (job #3360362) | Cod sursa (job #3360356) | Cod sursa (job #3360339)
#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';
}
}