Pagini recente » Cod sursa (job #2615768) | Cod sursa (job #917554) | Cod sursa (job #495417) | Cod sursa (job #2662942) | Cod sursa (job #1035332)
#include <iostream>
#include <cstdio>
#include <algorithm>
FILE *f,*g;
using namespace std;
int N,K,minc,V[16001];
void cautbin(int left, int right)
{
int mij=(left+right)/2,k=0,poz=1;
while(k<=K&&poz<=N)
{
int s=0;
k++;
while((s+V[poz])<=mij&&poz<=N)
{
s=s+V[poz];
poz++;
}
}
poz--;
if(mij<minc&&k<=K&&poz==N)
{
minc=mij;
cautbin(left,mij);
}
else if(mij<minc&&((k>K)||(poz!=N)))
{
if(mij!=left)
{
cautbin(mij,right);
}
}
}
int main()
{
f=fopen("transport.in","r");
g=fopen("transport.out","w");
int i,sum=0;
fscanf(f,"%d%d",&N,&K);
minc=16000;
for(i=1;i<=N;i++)
{
fscanf(f,"%d",&V[i]);
sum=sum+V[i];
}
cautbin(0,2*sum);
fprintf(g,"%d",minc);
fclose(f);
fclose(g);
return 0;
}