Pagini recente » Cod sursa (job #2105135) | Cod sursa (job #1558988) | Cod sursa (job #2414264) | Cod sursa (job #2925931) | Cod sursa (job #2794265)
#include <fstream>
using namespace std;
ifstream cin ("grupuri.in");
ofstream cout("grupuri.out");
#define ull unsigned long long
const int DIM = 100005;
int k,n,maxNrGr;
ull sum=0;
int v[DIM];
bool sePotFormaGrupuri(int capacitate)
{
ull s=0;
///din fiecare tip luam maxim capacitate
for(int i = 0 ; i < n ; i++)
{
s+= min(v[i],capacitate);
}
//cout << "nr elemente : " << s << " capacitate : " << capacitate << " k: " << k<< endl;
if (s >= (capacitate * k))
return true;
return false;
}
int main()
{
int left,right,mid,sol=0;
cin>>k>>n;
for(int i = 0 ; i < n ; i++)
{
cin>>v[i];
sum+=v[i];
}
//cout << "sum:"<<sum<<endl;
maxNrGr = sum/k;
left = 1 ;
right = maxNrGr;
/// binary search
while(left <= right)
{
mid = (left+right)/2;//(left+right)>>1;//
if(sePotFormaGrupuri(mid))
{
sol = mid;
left = mid+1;
}
else
right = mid-1;
}
cout << sol;
return 0;
}