Cod sursa(job #433870)

Utilizator Smaug-Andrei C. Smaug- Data 4 aprilie 2010 16:25:40
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>

inline void swap(int& a, int &b){
  int tmp; tmp = a; a = b; b = tmp;
}

int main(){

  freopen("permutari.in", "r", stdin);
  freopen("permutari.out", "w", stdout);

  int N, i, j, l, last;
  int v[10];

  scanf("%d", &N);

  for(i = 1; i <= N; i++)
    v[i] = i;

  while(true){

    for(i = 1; i <= N; i++)
      printf("%d ", v[i]);
    printf("\n"),

    j = -1;
    for(i = 1; i < N; i++)
      if(v[i] < v[i+1])
	j = i;

    if(j == -1)
      break;
    
    l = j+1;
    for(i = l+1; i <= N; i++)
      if(v[j] < v[i])
	l = i;

    swap(v[j], v[l]);
    
    for(i = j+1, last = N; i < last; last--, i++)
      swap(v[i], v[last]);

  }

  return 0;
}