[λ°±μ€] 1417λ² - κ΅νμμ μ κ±° (C++)
1417λ²: κ΅νμμ μ κ±°
첫째 μ€μ ν보μ μ Nμ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° μ°¨λ‘λλ‘ κΈ°νΈ 1λ²μ μ°μΌλ €κ³ νλ μ¬λμ μ, κΈ°νΈ 2λ²μ μ°μΌλ €κ³ νλ μ, μ΄λ κ² μ΄ Nκ°μ μ€μ κ±Έμ³ μ λ ₯μ΄ λ€μ΄μ¨λ€. Nμ 50λ³΄λ€ μκ±°λ κ°
www.acmicpc.net
λ¬Έμ
λ€μμ΄λ μ¬λμ λ§μμ μ½μ μ μλ κΈ°κ³λ₯Ό κ°μ§κ³ μλ€. λ€μμ΄λ μ΄ κΈ°κ³λ₯Ό μ΄μ©ν΄μ 2008λ 4μ 9μΌ κ΅νμμ μ κ±°λ₯Ό μ‘°μνλ €κ³ νλ€.
λ€μμ΄μ κΈ°κ³λ κ° μ¬λλ€μ΄ λꡬλ₯Ό μ°μ μ§ λ―Έλ¦¬ μ½μ μ μλ€. μ΄λ€ μ¬λμ΄ λꡬλ₯Ό μ°μ μ§ μ νμΌλ©΄, λ°λμ μ κ±°λ κ·Έ μ¬λμ μ°λλ€.
νμ¬ ννꡬμ λμ¨ κ΅νμμ ν보λ Nλͺ μ΄λ€. λ€μμ΄λ μ΄ κΈ°κ³λ₯Ό μ΄μ©ν΄μ κ·Έ λ§μμ μ£Όλ―Ό Mλͺ μ λ§μμ λͺ¨λ μ½μλ€.
λ€μμ΄λ κΈ°νΈ 1λ²μ΄λ€. λ€μμ΄λ μ¬λλ€μ λ§μμ μ½μ΄μ μμ μ μ°μ§ μμΌλ €λ μ¬λμ λμΌλ‘ λ§€μν΄μ κ΅νμμμ λΉμ μ΄ λκ² νλ €κ³ νλ€. λ€λ₯Έ λͺ¨λ μ¬λμ λνμ λ³΄λ€ λ§μ λνμλ₯Ό κ°μ§ λ, κ·Έ μ¬λμ΄ κ΅νμμμ λΉμ λλ€.
μλ₯Ό λ€μ΄μ, λ§μμ μ½μ κ²°κ³Ό κΈ°νΈ 1λ²μ΄ 5ν, κΈ°νΈ 2λ²μ΄ 7ν, κΈ°νΈ 3λ²μ΄ 7ν λΌκ³ νλ€λ©΄, λ€μμ΄λ 2λ² ν보λ₯Ό μ°μΌλ €κ³ νλ μ¬λ 1λͺ κ³Ό, 3λ² ν보λ₯Ό μ°μΌλ €κ³ νλ μ¬λ 1λͺ μ λμΌλ‘ λ§€μνλ©΄, κ΅νμμμ λΉμ μ΄ λλ€.
λμΌλ‘ λ§€μν μ¬λμ λ°λμ λ€μμ΄λ₯Ό μ°λλ€κ³ κ°μ νλ€.
λ€μμ΄κ° λ§€μν΄μΌνλ μ¬λμ μ΅μκ°μ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ ν보μ μ Nμ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° μ°¨λ‘λλ‘ κΈ°νΈ 1λ²μ μ°μΌλ €κ³ νλ μ¬λμ μ, κΈ°νΈ 2λ²μ μ°μΌλ €κ³ νλ μ, μ΄λ κ² μ΄ Nκ°μ μ€μ κ±Έμ³ μ λ ₯μ΄ λ€μ΄μ¨λ€. Nμ 50λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄κ³ , λνμλ 100λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ€μμ΄κ° λ§€μν΄μΌ νλ μ¬λμ μ΅μκ°μ μΆλ ₯νλ€.
νμ΄κ³Όμ
λͺ¨λ μ¬λλ€μ μ μΉκ³ λ€μμ΄κ° νλ₯Ό κ°μ₯ λ§μ΄ λ°μ λΉμ μ΄ λμ΄μΌνλ λ¬Έμ μλ€,
priority_queue (μ°μ μμ ν) λΌλ κ°λ μ΄ μ¬μ©μ΄ λμλλ° μ°μ μμ νλ λ€μ΄μ¨ μ λ ₯κ°λ€μ ν° κ°μμΌλ‘ μ λ ¬μ ν΄μ£Όλ νμμ΄μλ€.
μλ₯Ό λ€μ΄ 4, 6, 3, 10 μμΌλ‘ μ λ ₯κ°μ΄ λ€μ΄μ¨λ€λ©΄ κ·Έλ₯ νλ popμ΄ 4, 6, 3, 10 μ΄μκ² μ§λ§ μ°μ μμ νμμλ popμ μμκ° 10, 6, 4, 3 μΌλ‘ ν°κ°μ κΈ°μ€μΌλ‘ popμ΄ μ΄λ£¨μ΄μ§λ€.
ν΄λΉ κ°λ μ μ¬μ©νμ¬ λͺ¨λ μ¬λλ€μ μ μΉκ³ λ€μμ΄κ° λΉμ μ΄ λλ©΄ λλ€.
code
#include <iostream>
#include <queue>
int main(void)
{
int n, dasom, temp, count = 0;
std::priority_queue <int> que;
std::cin >> n;
std::cin >> dasom;
for (int i = 0; i < n - 1; i++)
{
std::cin >> temp;
que.push(temp);
}
while (!que.empty())
{
temp = que.top();
if (dasom <= temp) {
temp--;
dasom++;
count++;
que.pop();
que.push(temp);
}
else
que.pop();
}
std::cout << count << "\n";
return (0);
}
νκΈ°
μλ£κ΅¬μ‘°λ λ¬Έμ μ λ°λΌμ λ€μν μλ£κ΅¬μ‘°(ν, μ€ν λ°°μ΄ λ±λ±)λ₯Ό μ¬μ©ν΄μΌνλ κ±° κ°λ€.