Cod sursa(job #938241)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 12 aprilie 2013 08:59:29
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#include <algorithm>
#define minim(a,b) (a<b?a:b)
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
long long n,k,a[100011];

inline bool ver(int m){
	register long long s=0,x,i;
	for(i=1;i<=n;i++){
		x=minim(m,a[i]);
		s+=x;
	}
	if(s>=m*k)
		return true;
	return false;
}

int main(void){
	register long long i,u=0,p=1,m;
	
	f>>k>>n;
	for(i=1;i<=n;i++)
		f>>a[i],u+=a[i];
	u/=k;
	
	long long sol=-1;
	while(p<=u){
		m=p+(u-p)/2;
		if(ver(m)){
			sol=m;
			p=m+1;
		}
		else{
			u=m-1;
		}
	}
	
	g<<sol;
	return 0;
}