Cod sursa(job #1529436)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 20 noiembrie 2015 21:47:50
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

bool nextPermutation(vector <int> &v) {
	int i = v.size() - 1;
	while(i > 0 && v[i - 1] >= v[i])
		-- i;
	if(i == 0)
		return false;
	int head = i;
	while(i + 1 < v.size() && v[head - 1] < v[i + 1])
		++ i;
	swap(v[head - 1], v[i]);
	int st = head, dr = v.size() - 1;
	while(st < dr) {
		swap(v[st], v[dr]);
		++ st;
		-- dr;
	}
	return 1;	
}

int main() {
	ifstream fin("permutari.in");
	ofstream fout("permutari.out");

	int n;
	fin >> n;
	vector <int> v;
	for(int i = 0 ; i < n ; ++ i) {
		v.push_back(i + 1);	
	}
	do {
		for(auto it : v)
			fout << it << ' ';
		cout << '\n';
	} while(nextPermutation(v));
}