Koala - 2기/C반

[1072번] 게임

말랑카우19 2021. 2. 3. 23:28

풀이

더보기

x의 범위가 크기 때문에 1씩 증가시키는 방법으로 풀면 시간초과가 나게 된다.

따라서 이분 탐색을 통해 풀어야 한다.

이 때, 99% 승률에서는 100%가 될 수 없다는 점을 유의하여 예외로 처리해주어야 한다.

소스 코드

더보기
#include <iostream>
using namespace std;

long long x, y, z;
int main(){
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> x >> y;
	z = (y * 100) / x;
	//바뀌지 않는 경우 
	if(z >= 99){
		cout << -1;
		return 0;
	}
	long long left = 0, right = 1000000000;
	while(left <= right){
		long long mid = (left + right) / 2;
		long long temp = ((y + mid) * 100) / (x + mid);
		if(z >= temp){
			left = mid + 1;
		}
		else{
			right = mid - 1;
		}
	}
	cout << left;
}