Cod sursa(job #1552689)

Utilizator daniel.grosuDaniel Grosu daniel.grosu Data 18 decembrie 2015 14:43:17
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include<fstream>
const int NMAX = 100000;
using namespace std;
ifstream cin("buget.in");
ofstream cout("buget.out");

int A[NMAX];
int N,B;
int l,r,s;
int main()
{
	cin>>N>>B;
	for(int i=1; i<=N; ++i){
		cin>>A[i];
		if(A[i]>r)
			r=A[i];
	}
	int val=-1;
	while(l<=r)
	{
		int pivot=(l+r)>>1;
		s=0;
		for(int i=1; i<=N; ++i)
			if(A[i]<pivot)
				s+=A[i]; else s+=pivot;
		if(s==B)
			val=pivot;
		if(s<=B)
			l=pivot+1;
		else
			r=pivot-1;
	}
	cout<<r;
	return 0;
}