Pagini recente » Cod sursa (job #556891) | Cod sursa (job #61152) | Cod sursa (job #1881239) | Cod sursa (job #191225) | Cod sursa (job #2065151)
#include <fstream>
#include <stdlib.h>
using namespace std;
int maxim,poz;
int belefer(int* a,int k,int n,int c){
int sum=0,j=1;
for(int i=0;i<n;i++){
if(sum+a[i]>c){
sum=a[i];
j++;
}
else sum+=a[i];
}
return j;
}
void binaris(long long e,long long v,int* a, int k, int n){
if(e>v){
}
else{
int mid=(e+v)/2;
int l=belefer(a,k,n,mid),c;
if(l<=k){
poz=mid;
binaris(e,mid-1,a,k,n);
}
else{
binaris(mid+1,v,a,k,n);
}
}
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
int*a;
int n,k;
long long b=256000000;
f>>n>>k;
a=(int*)calloc(n,sizeof(int));
maxim=-1;
for(int i=0;i<n;i++){
f>>a[i];
if(a[i]>maxim){
maxim=a[i];
}
}
binaris(maxim,b,a,k,n);
g<<poz;
free(a);
f.close();
g.close();
return 0;
}