Pagini recente » Cod sursa (job #1229912) | Cod sursa (job #1474807) | Cod sursa (job #1458965) | Cod sursa (job #1912738) | Cod sursa (job #2136059)
#include <cstdio>
#include <iostream>
using namespace std;
int v[100001],n,k;
int verif (int mid){
int i,c,l,x;
c=0;
l=-1;
for (i=1;i<=n;i++){
x=min(v[i],mid);
l+=x;
if (l>=mid){
c=c+l/mid;
l%=mid;
}
}
if (c>=k || (c==k-1 && l==mid-1))
return 1;
return 0;
}
int main()
{
FILE *fin=fopen ("grupuri.in","r");
FILE *fout=fopen ("grupuri.out","w");
int i,ok;
long long st,dr=0,mid;
fscanf (fin,"%d%d",&k,&n);
for (i=1;i<=n;i++){
fscanf (fin,"%d",&v[i]);
dr+=v[i];
}
st=v[n-k+1];
dr/=k;
while (st<=dr){
mid=(st+dr)/2;
//printf ("%d ",mid);
ok=verif(mid);
if (ok)
st=mid+1;
else dr=mid-1;
}
fprintf (fout,"%lld",dr);
return 0;
}