Problem Solving/BOJ

[백준 / BOJ] C++ 27724 팝핀 소다

nageune 2023. 3. 12. 15:27
728x90
반응형

27724번: 팝핀 소다

 

문제

https://www.acmicpc.net/problem/27724

 

27724번: 팝핀 소다

입력의 첫 번째 줄에 대회에 참가하는 선수의 수 $N$, 일어날 수 있는 이변의 수 $M$, 시은이의 탄산 내성 $K$가 공백으로 구분되어 주어진다. 주어지는 모든 수는 정수이다. $(2 \le N \le 262\,144;$ $0 \le

www.acmicpc.net

 

 

풀이

대회가 토너먼트 형식이므로 항상 자신이 이길 수 있는 상대와 대결해야 최대한으로 승리할 수 있다. 따라서 시은이의 탄산 내성이 K일 때, 시은이가 이길 수 있는 최대 대결의 수는 log2 K번이다. 만약 이변이 있는 경우, 최대한 이길 수 있는 다음 이변의 수만큼 더 이길 수 있다. 따라서 최대 log2 K + M번 이길 수 있지만 전체 라운드 수는 log2 N번이다. 따라서 시은이가 이길 수 있는 최대 대결의 수는 min(log2 K + M, log2 N)번이다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, m, k;
  cin >> n >> m >> k;
  int ans = min(log2(k) + m, log2(n));
  cout << ans;
  return 0;
}

 

728x90
반응형