Cod sursa(job #2107431)

Utilizator brczBereczki Norbert Cristian brcz Data 17 ianuarie 2018 10:25:26
Problema Grupuri Scor 96
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
using namespace std;

#define ll long long

const int maxn = 100003;
const int maxk = 1003;

int n,k;
int a[maxn];

bool check(ll x) {

	ll sum = 0;
	for(int i=0;i<n;++i) {
		if(a[i] > x) sum += x;
		else sum += a[i];
		if(sum/k >= x) return true;
	}
	return false;
}


int32_t main(){

	ifstream fin("grupuri.in");
	ofstream fout("grupuri.out");

	fin >> k >> n;
	ll total = 0;
	for(int i=0;i<n;++i) {
		fin >> a[i];
		total += a[i];
	}
	ll lo = 0;
	ll hi = total / k;
	while(hi - lo > 1) {
		// cout << lo << ' ' << hi << '\n';
		ll mid = (lo + hi) / 2;
		if(check(mid))
			lo = mid;
		else
			hi = mid;
	}
	if(check(hi))
		fout << hi << '\n';
	else
		fout << lo << '\n';


	return 0;
}