Pagini recente » Cod sursa (job #1755119) | 7 | Cod sursa (job #364858) | Cod sursa (job #1885) | Cod sursa (job #2094249)
#include <bits/stdc++.h>
using namespace std;
int maxBits, usedBits;
ifstream fin("combinari.in");
ofstream fout("combinari.out");
template <class type>
void morphToGroup(type number, vector<int> &result){
type bit = 1<<(int)(log2(number));
for ( ;number or bit; bit>>=1 ){
if ( number - bit >= 0 ){
result.push_back(log2(bit)+1);
number -= bit;
}
}
}
inline void solveProblem(){
int startNumber = (1<<usedBits)-1;
int stopNumber = (1<<maxBits);
vector <int> group;
vector <int> :: reverse_iterator element;
for ( int index = startNumber; index <= stopNumber; index++ ){
if ( __builtin_popcount(index) == usedBits ){
group.clear();
morphToGroup(index, group);
for ( element = group.rbegin(); element < group.rend(); element++ )
fout << *element << " ";
fout << "\n";
}
}
}
int main(){
fin >> maxBits >> usedBits;
solveProblem();
}