알고리즘/BOJ

[BOJ 14888] 연산자 끼워넣기

히더 2018. 7. 15. 19:48

출처 : https://www.acmicpc.net/problem/14888


#include <bits/stdc++.h>

using namespace std;


int N, a[11], b[4], c[10], ans[2], t, r;


int main() {

ios::sync_with_stdio(false); cin.tie(0); cin >> N; 

for (int i = 0; i < N; i++) cin >> a[i]; ans[0] = -1e9; ans[1] = 1e9;

for (int i = 0; i < 4; i++) { cin >> r; b[i] = r; while (r--) { c[t++] = i; } }

do {

r = a[0]; t = 1;

for (int i = 0; i < N-1; i++) {

if (c[i] == 0)r += a[t++];

if (c[i] == 1)r -= a[t++];

if (c[i] == 2)r *= a[t++];

if (c[i] == 3)r /= a[t++];

}

ans[0] = max(ans[0], r); ans[1] = min(ans[1], r);

}while(next_permutation(c, c + (N-1)));


cout << ans[0] << '\n' << ans[1];

return 0;

}