#include <stdio.h>
#include <stdlib.h>
void printList(int n, const int* v)
{
for(int i = 0; i < n; i++)
}
int main() {
const int n = 6;
int k = 3;
int* v
= malloc(n
* sizeof(int)); for(int i = 0; i < k; i++)
v[i] = 1;
for(int i = k; i < n; i++)
v[i] = 0;
printList(n, v);
while(1)
{
int i;
for(i = 0; i < n; i++)
if(v[i] == 1)
break;
int leadingZeros = i;
if(leadingZeros == n - k)
break;
for(; i < n; i++)
if(v[i] == 0)
break;
v[i] = 1;
for(int z = 0; z <= leadingZeros; z++) {
i--;
v[i] = 0;
}
for(i--; i >= 0; i--) {
v[i] = 1;
}
printList(n, v);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgcHJpbnRMaXN0KGludCBuLCBjb25zdCBpbnQqIHYpCnsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgcHJpbnRmKCIlZCAiLCB2W2ldKTsKICAgIHByaW50ZigiXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICBjb25zdCBpbnQgbiA9IDY7CiAgICBpbnQgayA9IDM7CiAgICAKICAgIGludCogdiA9IG1hbGxvYyhuICogc2l6ZW9mKGludCkpOwogICAgZm9yKGludCBpID0gMDsgaSA8IGs7IGkrKykKICAgICAgICB2W2ldID0gMTsKICAgIGZvcihpbnQgaSA9IGs7IGkgPCBuOyBpKyspCiAgICAgICAgdltpXSA9IDA7CiAgICAgICAgCiAgICBwcmludExpc3Qobiwgdik7CiAgICB3aGlsZSgxKQogICAgewogICAgICAgIGludCBpOwogICAgICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgaWYodltpXSA9PSAxKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgaW50IGxlYWRpbmdaZXJvcyA9IGk7CiAgICAgICAgaWYobGVhZGluZ1plcm9zID09IG4gLSBrKQogICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgCiAgICAgICAgZm9yKDsgaSA8IG47IGkrKykKICAgICAgICAgICAgaWYodltpXSA9PSAwKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgdltpXSA9IDE7CiAgICAgICAgCiAgICAgICAgZm9yKGludCB6ID0gMDsgeiA8PSBsZWFkaW5nWmVyb3M7IHorKykgewogICAgICAgICAgICBpLS07CiAgICAgICAgICAgIHZbaV0gPSAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmb3IoaS0tOyBpID49IDA7IGktLSkgewogICAgICAgICAgICB2W2ldID0gMTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHJpbnRMaXN0KG4sIHYpOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==