Cod sursa(job #2045303)
Utilizator | Data | 22 octombrie 2017 09:41:58 | |
---|---|---|---|
Problema | Grupuri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include<bits/stdc++.h>
const int nmax=100005;
int v[nmax];
int main()
{
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
long long sum=0,mid=0,st=0,dr,last=0;
int n,i,j,k;
scanf("%d%d",&k,&n);
for(i=1; i<=n; i++)
{
scanf("%d",&v[i]);
sum+=v[i];
}
dr=sum/k;
while(st<=dr)
{
sum=0;
mid=(st+dr)/2;
for(i=1; i<=n; i++)
{
if(mid>=v[i])
sum+=v[i];
else
sum+=mid;
}
if(sum/k>=mid)
{
last=sum/k;
st=mid+1;
}
else
dr=mid-1;
}
printf("%lld",last);
return 0;
}