Pagini recente » Cod sursa (job #1139553) | Cod sursa (job #269304) | Cod sursa (job #1231899) | Cod sursa (job #588565) | Cod sursa (job #2910986)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("grupuri.in");
ofstream fout ("grupuri.out");
int k, n, v[100003];
long long nr;
int st, dr, mid;
int main()
{
fin>>k>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i];
nr+=v[i];
}
st=1, dr=nr/k;
while(st<=dr)
{
mid=(st+dr)/2;
///verific daca pot face mid grupe cu k animale distincte
///pt asta repartizez toate animalele in mid grupe, fiecare grupa cu elem distincte, si verific daca in fiecare grupa am cel putin k animale
long long sum=0;
for(int i=1; i<=n; i++)
sum+=min(v[i], mid);
if(k*mid<=sum)
st=mid+1;
else
dr=mid-1;
}
fout<<dr;
return 0;
}