Problem Solving/BOJ(백준)

[BOJ]백준 17245번: 서버실(C++)/Binary Search

이진2 2021. 6. 7. 22:29

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

 

17245번: 서버실

서버실에는 모두 85대의 컴퓨터가 있고, 3분이 지나면 전체의 58%인 50대의 컴퓨터가 정상 작동된다.

www.acmicpc.net

문제의 자료형 범위를 잘 확인하자 ^^

오랜만에 다시 백준 start

#include <cstdio>
#include <vector>
#define ull unsigned long long
using namespace std;

int n;
int map[1001][1001];

int main() {
	ull left = 0, right = 0, sum = 0;

	scanf("%d", &n);
	for (int i = 0; i < n; i++)for (int j = 0; j < n; j++) {
		scanf("%d", &map[i][j]);
		sum += map[i][j];
		if (map[i][j] > right)right = map[i][j];
	}

	while (left + 1 < right) {
		ull mid = (left + right) / 2;
		ull cnt = 0;

		for (int i = 0; i < n; i++)for (int j = 0; j < n; j++) {
			cnt += mid > map[i][j] ? map[i][j]:mid;
		}
		if (((double)cnt/sum)>=0.5)
			right=mid;
		else left = mid;
	}
	printf("%lld", right);
	return 0;
}