알고리즘
백준 19638번 센티와 마법의 뿅망치 C++
영춘권의달인
2023. 2. 12. 12:34
https://www.acmicpc.net/problem/19638
19638번: 센티와 마법의 뿅망치
마법의 뿅망치를 센티의 전략대로 이용하여 거인의 나라의 모든 거인이 센티보다 키가 작도록 할 수 있는 경우, 첫 번째 줄에 YES를 출력하고, 두 번째 줄에 마법의 뿅망치를 최소로 사용한 횟수
www.acmicpc.net
우선순위 큐
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>
using namespace std;
using int64 = long long;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
priority_queue<int> pq;
int n, h, t;
cin >> n >> h >> t;
for (int i = 0; i < n; i++) {
int hh;
cin >> hh;
pq.push(hh);
}
int cnt = 0;
while (true) {
if (pq.top() == 1 || pq.top() < h) break;
if (cnt >= t) break;
int curr = pq.top();
pq.pop();
pq.push(curr / 2);
cnt++;
}
if (pq.top() < h) {
cout << "YES\n" << cnt;
}
else {
cout << "NO\n" << pq.top();
}
}