다만, 중복을 포함하면서 비내림차순이므로 반복문에서 자기 자신의 index 이상인 경우만 고려해준다는 점에서 차이가 존재한다.
Code
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
vector<int> v;
int N, M;
int result[8];
void solve(int cur, int index)
{
result[index++] = v[cur];
if (index == M)
{
for (int i = 0; i < M; i++)
{
if (i != M - 1)
cout << result[i] << " ";
else
cout << result[i] << "\n";
}
return;
}
for (int i = cur; i < N; i++)
{
solve(i, index);
}
return;
}
int main(void)
{
fastio;
memset(result, 0, sizeof(result));
cin >> N >> M;
for (int i = 0; i < N; i++)
{
int t;
cin >> t;
v.push_back(t);
}
sort(v.begin(), v.end());
for (int i = 0; i < N; i++)
{
solve(i, 0);
}
return 0;
}