Pagini recente » Cod sursa (job #1690296) | Cod sursa (job #2890661) | Cod sursa (job #139807) | Cod sursa (job #1935204) | Cod sursa (job #605132)
Cod sursa(job #605132)
#include <stdio.h>
#define MAX 100001
int a[MAX], n, k;
long long bin_search(long long, long long);
long long test(long long);
int main()
{
long long sum = 0;
int i;
freopen("grupuri.in", "r", stdin);
freopen("grupuri.out", "w", stdout);
scanf("%d %d", &k, &n);
for(i=0;i<n;++i)
{
scanf("%d", &a[i]);
sum += a[i];
}
printf("%lld", bin_search(1, sum/k));
return 0;
}
long long bin_search(long long st, long long dr)
{
int m;
if(st>=dr) return st;
m = (st+dr)/2;
if(test(m))
{
return bin_search(m+1, dr);
}
return bin_search(st, m);
}
long long test(long long nrg)
{
int col = 0, lin = 0, i = 0;
while(col < k)
{
if(i == n)
{
return 0;
}
if(a[i] >= nrg)
{
col++;
}
else
{
col = col + (lin + a[i]) / nrg;
lin = (lin + a[i]) % nrg;
}
i++;
}
return 1;
}