본문 바로가기
알고리즘/softeer

Softeer / [인증평가(4차) 기출] 슈퍼컴퓨터 클러스터

by 유이얼 2022. 12. 14.

https://softeer.ai/practice/info.do?idx=1&eid=1204

#include <iostream>
#include <vector>

using namespace std;


bool f(vector<int> &A, long long B, long long n) {
	for (auto a : A) {
		if (a < n) B -= (n - a) * (n - a);
		if (B < 0) return false;
	}
	return true;
}


int main(void)
{
	long long N, B;
	cin >> N >> B;

	vector<int> A(N);
	for (int i = 0; i < N; ++i) cin >> A[i];

	long long right = 2e9;
	long long left = 1;

	while (left < right) {
		long long m = (left + right + 1) / 2;

		if (f(A, B, m)) left = m;
		else right = m - 1;
	}

	cout << right << '\n';
	return 0;
}