Pagini recente » Cod sursa (job #1391044) | Cod sursa (job #3135875) | Cod sursa (job #2938370) | Cod sursa (job #1402857) | Cod sursa (job #1507006)
#include <fstream>
using namespace std;
int v[16001];
int main()
{
FILE *fin=fopen ("transport.in","r");
FILE *fout=fopen ("transport.out","w");
int n,k,i,maxi,j,drm,s,stg,dr;
fscanf (fin,"%d %d",&n,&k);
maxi=0;
for (i=0;i<n;i++){
fscanf (fin,"%d",&v[i]);
if (maxi<v[i]) maxi=v[i];
}
stg=maxi;
dr=n*maxi;
while (stg<=dr){
i=0;
maxi=(stg+dr)/2;
drm=0;
while (i<n){
j=i;
s=v[j];
while (j<n && s<maxi){
j++;
s+=v[j];
}
if (s==maxi)
j++;
i=j;
drm++;
}
if (drm>k)
stg=maxi+1;
else dr=maxi-1;
}
fprintf (fout,"%d\n",stg);
return 0;
}