不懂了只有40
查看原帖
不懂了只有40
1272396
huochairenzhishang楼主2024/7/8 15:47
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <map>
#include <cmath>
#include <string>
using namespace std;
int* num = new int[10000002];
#define unsigned long int
int number(int m, int mid, int n) {
	int sum = 0;
	for (int i = 0; i < n; ++i) {
		if (num[i] > mid)
			sum += num[i] - mid;
	}
	if (sum == m) return 1;
	else if (sum > m)return 0;
	else return 2;
}
signed  main() {
	int n; int m; cin >> n >> m;
	for (int i = 0; i < n; ++i)
		cin >> num[i];
	int l = 0; int r = 1e9; int mid;
	while (l + 1 != r) {
		mid = (r + l) / 2;
		if (number(m,mid,n)==1) {
			break;
		}
		else if (number(m, mid, n) == 2) {
			r = mid;
		}
		else {
			l = mid;
		}
	}
	mid = (r + l) / 2;
	cout << mid;
}

2024/7/8 15:47
加载中...