Pagini recente » Cod sursa (job #2612336) | Cod sursa (job #2587402) | Cod sursa (job #3285391) | Cod sursa (job #2559501) | Cod sursa (job #2330188)
#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>
bool next_perm(std::vector<int>& p) {
if (p.size() < 2)
return false;
auto it = p.end() - 1;
while (it != p.begin() && *(it-1) > *it)
--it;
if (it == p.begin())
return false;
std::reverse(it, p.end());
auto next = std::lower_bound(it, p.end(), *(it-1));
std::iter_swap(it-1, next);
return true;
}
int main() {
std::ifstream fin("permutari.in");
std::ofstream fout("permutari.out");
int n;
fin >> n;
std::vector<int> p(n, 0);
std::generate( p.begin(), p.end(), [] () {static int n = 1; return n++;} );
do {
std::copy(p.begin(), p.end(), std::ostream_iterator<int>(fout, " "));
fout << '\n';
} while (next_perm(p));
return 0;
}