$\newcommand{\O}{\mathrm{O}}$
要素数 $n$ の数列から $r$ 個の要素の取り方 $n \mathrm{C} r$ 通りをなめたいときに使うテク.
STL にある next_permutation を用いて true/false の配列で mask する形で $r$ 個選んでくると良い
vector<bool> v(n, false); fill(v.end() - r, v.end(), true); do { vector<int> res; for(int i = 0; i < n; i++){ if(v[i]){ res.push_back(i); } } }while(next_permutation(v.begin(), v.end()));
省略