// next_permutation example
#include <iostream> // std::cout
#include <algorithm> // std::next_permutation, std::sort
#include <chrono>
int main () {
std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
int myints[] = {1,2,3,4,5,6,7,8,9,10,11,12};
int i = 0;
std::sort (myints,myints+12);
do {
i++;
// std::cout << myints[0] << ' ' << myints[1] << ' ' << myints[2] << '\n';
} while ( std::next_permutation(myints,myints+12) );
std::chrono::steady_clock::time_point end= std::chrono::steady_clock::now();
std::cout << "permutations: " << i << '\n';
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << " microseconds" <<std::endl;
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds> (end - begin).count() << " nanoseconds" <<std::endl;
return 0;
}
Ly8gbmV4dF9wZXJtdXRhdGlvbiBleGFtcGxlCiNpbmNsdWRlIDxpb3N0cmVhbT4gICAgIC8vIHN0ZDo6Y291dAojaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAvLyBzdGQ6Om5leHRfcGVybXV0YXRpb24sIHN0ZDo6c29ydAojaW5jbHVkZSA8Y2hyb25vPgoKaW50IG1haW4gKCkgewogIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgYmVnaW4gPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKCiAgaW50IG15aW50c1tdID0gezEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfTsKICBpbnQgaSA9IDA7CgogIHN0ZDo6c29ydCAobXlpbnRzLG15aW50cysxMik7CiAgCiAgZG8gewogICAgaSsrOwogICAgLy8gc3RkOjpjb3V0IDw8IG15aW50c1swXSA8PCAnICcgPDwgbXlpbnRzWzFdIDw8ICcgJyA8PCBteWludHNbMl0gPDwgJ1xuJzsKICB9IHdoaWxlICggc3RkOjpuZXh0X3Blcm11dGF0aW9uKG15aW50cyxteWludHMrMTIpICk7CgogCiAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBlbmQ9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogIAoKICBzdGQ6OmNvdXQgPDwgInBlcm11dGF0aW9uczogIiA8PCBpIDw8ICdcbic7CiAgc3RkOjpjb3V0IDw8ICJUaW1lIGRpZmZlcmVuY2UgPSAiIDw8IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KGVuZCAtIGJlZ2luKS5jb3VudCgpIDw8ICIgbWljcm9zZWNvbmRzIiA8PHN0ZDo6ZW5kbDsKICBzdGQ6OmNvdXQgPDwgIlRpbWUgZGlmZmVyZW5jZSA9ICIgPDwgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzPiAoZW5kIC0gYmVnaW4pLmNvdW50KCkgPDwgIiBuYW5vc2Vjb25kcyIgPDxzdGQ6OmVuZGw7CgogIHJldHVybiAwOwp9