#include <iostream>
#include <algorithm>
#include <iterator>
#include <utility>
#include <vector>
using namespace std;
struct ComparePair
{
bool operator()(const pair<int, int> &lhs, const pair<int, int> &rhs)
{
return lhs.first < rhs.first;
}
}comparePair;
int main(int argc, char *argv[])
{
////////////////////////////
// Custom
vector<pair<int, int> > v;
v.push_back(pair<int, int>(1, 3000));
v.push_back(pair<int, int>(3, 5000));
v.push_back(pair<int, int>(2, 9000));
sort(v.begin(), v.end(), comparePair);
do
{
for(const auto &i : v)
{
cout << i.first << ' ' << i.second << ' ';
}
putchar('\n');
}
while(next_permutation(v.begin(), v.end(), comparePair));
////////////////////////////
// Default
int arr[] = {1, 2, 3};
do
{
// Do something
for(const int i : arr)
printf("%d ", i);
putchar('\n');
}
while(next_permutation(arr, arr+3));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBDb21wYXJlUGFpcgp7CiAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgcGFpcjxpbnQsIGludD4gJmxocywgY29uc3QgcGFpcjxpbnQsIGludD4gJnJocykKICAgIHsKICAgICAgICByZXR1cm4gbGhzLmZpcnN0IDwgcmhzLmZpcnN0OwogICAgfQp9Y29tcGFyZVBhaXI7CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CgkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAvLyBDdXN0b20KICAgIHZlY3RvcjxwYWlyPGludCwgaW50PiA+IHY7CiAgICAKICAgIHYucHVzaF9iYWNrKHBhaXI8aW50LCBpbnQ+KDEsIDMwMDApKTsKICAgIHYucHVzaF9iYWNrKHBhaXI8aW50LCBpbnQ+KDMsIDUwMDApKTsKICAgIHYucHVzaF9iYWNrKHBhaXI8aW50LCBpbnQ+KDIsIDkwMDApKTsKCiAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwgY29tcGFyZVBhaXIpOwogICAgCiAgICBkbwogICAgewogICAgICAgIGZvcihjb25zdCBhdXRvICZpIDogdikKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgaS5maXJzdCA8PCAnICcgPDwgaS5zZWNvbmQgPDwgJyAnOwogICAgICAgIH0KICAgICAgICBwdXRjaGFyKCdcbicpOwogICAgfQogICAgd2hpbGUobmV4dF9wZXJtdXRhdGlvbih2LmJlZ2luKCksIHYuZW5kKCksIGNvbXBhcmVQYWlyKSk7CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgLy8gRGVmYXVsdAogICAgaW50IGFycltdID0gezEsIDIsIDN9OwogICAgZG8KICAgIHsKICAgICAgICAvLyBEbyBzb21ldGhpbmcKICAgICAgICBmb3IoY29uc3QgaW50IGkgOiBhcnIpCiAgICAgICAgICAgIHByaW50ZigiJWQgIiwgaSk7CiAgICAgICAgcHV0Y2hhcignXG4nKTsKICAgIH0KICAgIHdoaWxlKG5leHRfcGVybXV0YXRpb24oYXJyLCBhcnIrMykpOwoKICAgIHJldHVybiAwOwp9