APS/백준

[17245] 서버실 C++

문래동까마귀 2022. 2. 21. 00:58

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

 

17245번: 서버실

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

www.acmicpc.net

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int main() {
	int N;
	int arr[1000][1000];

	cin >> N;

	int MAX = -1;
	
	// long long은 실패
	double sum = 0;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			cin >> arr[i][j];
			MAX = max(MAX, arr[i][j]);
			sum += arr[i][j];
		}
	}

	int left = 0;
	int right = MAX;

	int answer = 21e8;

	while (left <= right) {
		long long cnt = 0;

		int middle = (left + right) / 2;

		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				cnt += min(middle, arr[i][j]);
			}
		}

		if (cnt >= round(sum / 2)) {
			answer = min(middle, answer);

			right = middle - 1;
		}

		else {
			left = middle + 1;
		}

	}

	cout << answer;

	return 0;
}