Cod sursa(job #1728402)

Utilizator Mihaibv13Mihai Stoian Mihaibv13 Data 12 iulie 2016 20:31:45
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>
#include <iostream>
#include <limits>
using namespace std;

int main()
{   int v[100];
    int n;
    FILE *f=fopen("permutari.in","r"),*g=fopen("permutari.out","w");

    fscanf(f,"%d",&n);

     for(int i=1;i<=n;i++)
    {
        v[i]=i; fprintf(g,"%d ",v[i]);

    }

    fprintf(g,"\n");
 int i;
  int ok=0;
  int k;
  int vv[100];
  int j;
  int minim=INT_MAX;
  int imin;
  while (ok==0)
  {
      for(i=n;i>1;i--)
      {
          if(v[i]>v[i-1]) break;
      }



      if(i==1) break;

      k=i;
      k--;
      minim=INT_MAX;
      for(j=k;j<=n;j++)
      {if(v[j]>v[k]) minim=min(v[j],minim);

      }

      for(i=1;i<=n;i++)
      { if(v[i]==minim) imin=i;

      }
int aux;
aux=v[k];
v[k]=v[imin];
v[imin]=aux;

      j=1;

      for(i=n;i>=k+1;i--)
      {
          vv[j++]=v[i];
      }

      j=1;

      for(i=k+1;i<=n;i++)
      {
          v[i]=vv[j++];
      }


   for(i=1;i<=n;i++)
    fprintf(g,"%d ",v[i]);


    fprintf(g,"\n");



  }


    return 0;
}