https://www.acmicpc.net/problem/2014
우선순위 큐를 이용하는 문제다.
코드는 간단하다
아이디어도 간단하다. 자료형 실수만 하지 않으면 금방 풀 수 있을 것 같다.
/* 소수의 곱 */
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
#include <set>
#define INTMAX 2147483647
using namespace std;
int n_of_decimal, target;
int decimal[100];
set<int> is_it;
void input();
void solve();
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
input();
solve();
return 0;
}
void input() {
cin >> n_of_decimal >> target;
for (int i = 0; i < n_of_decimal; i++) {
cin >> decimal[i];
}
}
void solve() {
priority_queue<int> pq;
for (int i = 0; i < n_of_decimal; i++) {
pq.push(-1 * decimal[i]);
}
int cnt = 0;
while ((++cnt) < target) {
int curr = pq.top();
while (!pq.empty() && pq.top() == curr) pq.pop();
for (int i = 0; i < n_of_decimal; i++) {
long long int temp = (long long int)curr * (long long int)decimal[i];
if (-1 * temp >= INTMAX) continue;
pq.push(temp);
}
}
cout << -1 * pq.top() << '\n';
return;
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 10868 최솟값 (0) | 2020.08.16 |
---|---|
백준 2104 부분배열 고르기 (0) | 2020.08.15 |
백준 10159 저울 (0) | 2020.08.14 |
백준 1976 여행가자 (0) | 2020.08.14 |
백준 15684 사다리 조작 (0) | 2020.08.13 |