Pagini recente » Cod sursa (job #2361075) | Cod sursa (job #1905252) | Cod sursa (job #2343684) | Cod sursa (job #928417) | Cod sursa (job #1378531)
#include <iostream>
#include <fstream>
#define fin "permutari.in"
#define fou "permutari.out"
using namespace std;
ifstream t1(fin);
ofstream t2(fou);
int n,perm[11],k,l;
void sw(int a,int b)
{
int t;
t=perm[a]; perm[a]=perm[b]; perm[b]=t;
}
void rev(int p1,int p2)
{
int mid,i;
p2=n;
mid=(p1+p2)/2;
for(i=p1;i<=mid;i++) sw(i,p2-i+p1);
}
int finish()
{
int ok=1,i;
for(i=1;i<n;i++) if(perm[i]<perm[i+1]) ok=0;
return ok;
}
void findem()
{
int i;
for(i=1;i<=n-1;i++)
if(perm[i]<perm[i+1]) k=i;
for(i=n;i>=k;i--) if(perm[i]>perm[k]) { l=i; break; }
}
int main()
{
int i,j,ok=0,nr=1;;
t1>>n;
for(i=1;i<=n;i++) perm[i]=i;
for(i=1;i<=n;i++) t2<<perm[i]<<' '; t2<<'\n';
while(ok==0)
{
findem();
sw(k,l);
rev(k+1,l);
//nr++; if(nr==4) ok=1;
if(ok==0) { for(i=1;i<=n;i++) t2<<perm[i]<<' '; t2<<'\n';}
if(finish()==1) ok=1;
}
/* findem(); cout<<k<<' '<<l; cout<<'\n';
sw(k,l);
for(i=1;i<=n;i++) cout<<perm[i]<<' '; cout<<'\n';
rev(k+1,l);
for(i=1;i<=n;i++) cout<<perm[i]<<' ';*/
t1.close();
t2.close();
return 0;
}