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;
}

댓글

현재 작성된 댓글이 없습니다.