Pagini recente » Cod sursa (job #1977574) | Cod sursa (job #2904985) | Cod sursa (job #2070511) | Cod sursa (job #867095) | Cod sursa (job #120882)
Cod sursa(job #120882)
#include <stdio.h>
main()
{
FILE* r;
int e;
unsigned int a[100000],b[100000],k,n,m,d,t,l,i,s=0,x,y;
r=fopen("grupuri.in","r");
fscanf(r,"%ld %ld",&k,&n);
for (i=1;i<=n;i++)
{
fscanf(r,"%u",&a[i]);
b[i]=a[i];
s+=a[i];
}
fclose(r);
l=s/k;
d=1;
t=l;
do
{
x=(t+d)/2;
for (i=1;i<=n;i++)
a[i]=b[i];
e=0;
m=1;
y=x;
for (i=1;i<=n;i++)
{
if (a[i]>=x)
{
m++;
}
else
{
if (a[i]>=y)
{
a[i]=a[i]-y;
m++;
i--;
y=x-(a[i]-y);
}
else
y=y-a[i];
}
if (m>=k)
{
e=1;
break;
}
}
if (e==1)
d=x+1;
else
t=x-1;
}
while (d<=t);
r=fopen("grupuri.out","w");
fprintf(r,"%u",x);
fclose(r);
}