Editorial for [sw] 최댓값 찾기
이 해설은 꼭 필요할 때만 사용하고, 코드를 복사-붙여넣기 하지 마세요. 문제 출제자와 해설 작성자를 존중해 주세요.
문제를 직접 풀기 전에 공식 해답을 제출하는 것은 제재 대상입니다.
문제를 직접 풀기 전에 공식 해답을 제출하는 것은 제재 대상입니다.
태그
수학
정렬
브루트포스
조합
정답 코드
#include <bits/stdc++.h>
using namespace std;
int N, K;
long long arr[55];
long long result = -(1e16);
void f(int idx, long long val, int cnt) {
if(idx > N) {
if(cnt == K) result = max(result, val);
return;
}
if(cnt == 0) {
f(idx+1, arr[idx], cnt+1);
}
else if(cnt < K) {
f(idx+1, val * arr[idx], cnt+1);
}
f(idx+1, val, cnt);
return;
}
int main() {
cin>>N>>K;
for(int i = 1; i <= N; ++i) cin>>arr[i];
f(1, 0, 0);
cout<<result;
return 0;
}