Pagini recente » Borderou de evaluare (job #2101577) | Cod sursa (job #2100508)
#include <fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
long long n, i, j, k, s, t, a[100005], st, dr, mij;
int main ()
{
f>>k>>n;
for (i=1;i<=n;i++)
{
f>>a[i];
s+=a[i];
}
st=1;
dr=s/k;
while (st<=dr)
{
mij=st+(dr-st)/2;
s=0;
for (i=1;i<=n;i++)
{
if (a[i]<mij) s += a[i];
else s += mij;
}
if (s>=mij*k) st = mij+1;
if (s<mij*k) dr = mij-1;
}
s=0;
st=mij+1;
for (i=1;i<=n;i++)
{
if (a[i]<st) s+=a[i];
else s+=st;
}
if (s>=st*k) mij++;
s=0;
for (i=1;i<=n;i++)
{
if (a[i]<mij) s+=a[i];
else s+=mij;
}
if (s<mij*k) mij--;
g<<mij<<'\n';
}